Skip to content

Instantly share code, notes, and snippets.

@mellinoe
Created January 26, 2017 22:56
Show Gist options
  • Save mellinoe/41c9b7d22556c80dbd3f279ca683ee00 to your computer and use it in GitHub Desktop.
Save mellinoe/41c9b7d22556c80dbd3f279ca683ee00 to your computer and use it in GitHub Desktop.
C++ Complex boundary results
// C++ Code:
#include <complex>
#include <stdio.h>
using namespace std;
void DoTests(complex<double> c)
{
auto sq = sqrt(c);
auto h = hypot(c.real(), c.imag());
auto a = abs(c);
printf("(%f, %f)\r\n", c.real(), c.imag());
printf("Abs(%f, %f) = %f\r\n", c.real(), c.imag(), a);
printf("Sqrt(%f, %f) = %f, %f\r\n", c.real(), c.imag(), sq.real(), sq.imag());
printf("Hypot(%f, %f): %f\r\n", c.real(), c.imag(), h);
printf("\r\n");
}
int main()
{
DoTests(complex<double>(INFINITY, INFINITY));
DoTests(complex<double>(INFINITY, -INFINITY));
DoTests(complex<double>(-INFINITY, -INFINITY));
DoTests(complex<double>(-INFINITY, INFINITY));
DoTests(complex<double>(INFINITY, NAN));
DoTests(complex<double>(-INFINITY, NAN));
DoTests(complex<double>(NAN, INFINITY));
DoTests(complex<double>(NAN, -INFINITY));
DoTests(complex<double>(NAN, NAN));
}
/*
Results:
(inf, inf)
Abs(inf, inf) = inf
Sqrt(inf, inf) = inf, inf
Hypot(inf, inf): inf
(inf, -inf)
Abs(inf, -inf) = inf
Sqrt(inf, -inf) = inf, -inf
Hypot(inf, -inf): inf
(-inf, -inf)
Abs(-inf, -inf) = inf
Sqrt(-inf, -inf) = inf, -inf
Hypot(-inf, -inf): inf
(-inf, inf)
Abs(-inf, inf) = inf
Sqrt(-inf, inf) = inf, inf
Hypot(-inf, inf): inf
(inf, nan)
Abs(inf, nan) = inf
Sqrt(inf, nan) = inf, nan
Hypot(inf, nan): inf
(-inf, nan)
Abs(-inf, nan) = inf
Sqrt(-inf, nan) = nan, inf
Hypot(-inf, nan): inf
(nan, inf)
Abs(nan, inf) = inf
Sqrt(nan, inf) = inf, inf
Hypot(nan, inf): inf
(nan, -inf)
Abs(nan, -inf) = inf
Sqrt(nan, -inf) = inf, -inf
Hypot(nan, -inf): inf
(nan, nan)
Abs(nan, nan) = nan
Sqrt(nan, nan) = nan, nan
Hypot(nan, nan): nan
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment