Modernes C++ programmieren

Okt 20, 2024

lst-0087-book.cpp

// https://godbolt.org/z/43rYYeKx9 
#include <iostream> 
#include <iomanip> // setprecision, fixed
#include <complex> 
using std::cout; using std::complex;

int main() {
    using namespace std::complex_literals;   // for i-suffix 
    cout << std::fixed << std::setprecision(1); 
    complex<double> z1 = 1i * 1i;            // i times i 
    cout << z1 << '\n';                      // output: (-1.0,0.0)
    complex<double> z2 = std::pow(1i, 2);    // i-square 
    cout << z2 << '\n';                      // Output: (-1.0,0.0) 
    double PI = std::acos(-1);               // Length of half a unit circle 
    complex<double> z3 = std::exp(1i * PI);  // Euler formula 
    cout << z3 << '\n';                      // Output: (-1.0,0.0) 
    complex<double> a(3, 4);                 // usually as a constructor 
    complex<double> b = 1. - 2i;             // practically as a literal

    // Calculations: 
    cout << "a + b = " << a + b << "\n";     // Output: a + b = (4.0,2.0) 
    cout << "a * b = " << a * b << "\n";     // Output: a * b = (11.0,-2.0) 
    cout << "a / b = " << a / b << "\n";     // Output: a / b = (-1.0,2.0) 
    cout << "|a| = " << abs(a) << "\n";      // Output: |a| = 5.0 
    cout << "conj(a) = " << conj(a) << "\n"; // Output: conj(a) = (3.0,-4.0) 
    cout << "norm(a) = " << norm(a) << "\n"; // Output: norm(a) = 25.0 
    cout << "abs(a) = " << abs(a) << "\n";   // Output: abs(a) = 5.0 
    cout << "exp(a) = " << exp(a) << "\n";   // Output: exp(a) = (-13.1,-15.2) 
}