Loading [MathJax]/extensions/tex2jax.js
mightymandel
v16
GPU-based Mandelbrot set explorer
mightymandel
INDEX
README
CHANGES
BENCHMARKS
TESTING
HACKING
BUGS
TODO
WINDOWS
CODE
Namespaces
Data Structures
Files
File List
atom.c
atom.h
blob_set.c
blob_set.h
completion.c
completion.h
complex.c
complex.h
config.glsl
crc.c
crc.h
filename.c
filename.h
find_ref.c
find_ref.h
fp32_colour.c
fp32_colour.h
fp32_colour2_frag.glsl
fp32_colour2_vert.glsl
fp32_colour_frag.glsl
fp32_colour_vert.glsl
fp32_complex.glsl
fp32_escaped.c
fp32_escaped.h
fp32_escaped_frag.glsl
fp32_escaped_geom.glsl
fp32_escaped_vert.glsl
fp32_fillc.c
fp32_fillc.h
fp32_fillc_frag.glsl
fp32_fillc_vert.glsl
fp32_init.c
fp32_init.h
fp32_init_vert.glsl
fp32_preamble.glsl
fp32_step.c
fp32_step.h
fp32_step_vert.glsl
fp32_unescaped.c
fp32_unescaped.h
fp32_unescaped_geom.glsl
fp32_unescaped_vert.glsl
fp64_complex.glsl
fp64_escaped.c
fp64_escaped.h
fp64_escaped_frag.glsl
fp64_escaped_geom.glsl
fp64_escaped_vert.glsl
fp64_init.c
fp64_init.h
fp64_init_vert.glsl
fp64_preamble.glsl
fp64_step.c
fp64_step.h
fp64_step_vert.glsl
fp64_unescaped.c
fp64_unescaped.h
fp64_unescaped_geom.glsl
fp64_unescaped_vert.glsl
fpxx_approx.c
fpxx_approx.h
fpxx_approx_vert.glsl
fpxx_escaped.c
fpxx_escaped.h
fpxx_escaped_frag.glsl
fpxx_escaped_geom.glsl
fpxx_escaped_vert.glsl
fpxx_init.c
fpxx_init.h
fpxx_init_frag.glsl
fpxx_init_geom.glsl
fpxx_init_vert.glsl
fpxx_step.c
fpxx_step.h
fpxx_step_vert.glsl
fpxx_unescaped.c
fpxx_unescaped.h
fpxx_unescaped_geom.glsl
fpxx_unescaped_vert.glsl
image.c
image.h
interact.c
interact.h
logging.c
logging.h
metadata.c
metadata.h
mightymandel.c
mightymandel.h
parse.c
parse.h
parse_gif.c
parse_gif.h
parse_kfr.c
parse_kfr.h
parse_mdz_center.c
parse_mdz_center.h
parse_mdz_corners.c
parse_mdz_corners.h
parse_mm.c
parse_mm.h
parse_png.c
parse_png.h
parse_ppar_center.c
parse_ppar_center.h
parse_ppar_corners.c
parse_ppar_corners.h
parse_ppm.c
parse_ppm.h
parse_sft.c
parse_sft.h
png.c
png.h
poll.c
poll.h
record.c
record.h
ref_set.c
ref_set.h
render.c
render.h
shader.c
shader.h
slice.c
slice.h
startup.c
startup.h
stopwatch.c
stopwatch.h
texture.c
texture.h
tiling.c
tiling.h
utility.c
utility.h
version.c
version.h
vram.c
vram.h
zoom.c
zoom.h
Globals
complex.h
Go to the documentation of this file.
1
// mightymandel -- GPU-based Mandelbrot Set explorer
2
// Copyright (C) 2012,2013,2014 Claude Heiland-Allen
3
// License GPL3+ http://www.gnu.org/licenses/gpl.html
4
5
#ifndef COMPLEX_H
6
#define COMPLEX_H 1
7
17
#include <mpfr.h>
18
22
typedef
mpfr_t
R
;
23
27
typedef
struct
{
28
R
x
;
29
R
y
;
30
}
C
;
31
38
#define c_set_prec(o, p) do{\
39
mpfr_set_prec(o.x, p);\
40
mpfr_set_prec(o.y, p);\
41
}while(0)
42
49
#define c_set(o, l) do{\
50
mpfr_set(o.x, l.x, MPFR_RNDN);\
51
mpfr_set(o.y, l.y, MPFR_RNDN);\
52
}while(0)
53
62
#define c_mag2(o, l, t1, t2) do{\
63
mpfr_sqr(t1, l.x, MPFR_RNDN);\
64
mpfr_sqr(t2, l.y, MPFR_RNDN);\
65
mpfr_add(o, t1, t2, MPFR_RNDN);\
66
}while(0)
67
75
#define c_add(o, l, r) do{\
76
mpfr_add(o.x, l.x, r.x, MPFR_RNDN);\
77
mpfr_add(o.y, l.y, r.y, MPFR_RNDN);\
78
}while(0)
79
89
#define c_sqr(o, l, t1, t2, t3) do{\
90
mpfr_sqr(t1, l.x, MPFR_RNDN);\
91
mpfr_sqr(t2, l.y, MPFR_RNDN);\
92
mpfr_mul(t3, l.x, l.y, MPFR_RNDN);\
93
mpfr_sub(o.x, t1, t2, MPFR_RNDN);\
94
mpfr_mul_2ui(o.y, t3, 1, MPFR_RNDN);\
95
}while(0)
96
108
#define c_mul(o, l, r, t1, t2, t3, t4) do{\
109
mpfr_mul(t1, l.x, r.x, MPFR_RNDN);\
110
mpfr_mul(t2, l.y, r.y, MPFR_RNDN);\
111
mpfr_mul(t3, l.x, r.y, MPFR_RNDN);\
112
mpfr_mul(t4, l.y, r.x, MPFR_RNDN);\
113
mpfr_sub(o.x, t1, t2, MPFR_RNDN);\
114
mpfr_add(o.y, t3, t4, MPFR_RNDN);\
115
}while(0)
116
124
#define c_mul_2ui(o, l, r) do{\
125
mpfr_mul_2ui(o.x, l.x, r, MPFR_RNDN);\
126
mpfr_mul_2ui(o.y, l.y, r, MPFR_RNDN);\
127
}while(0)
128
129
#endif
src
complex.h
Generated on Mon Jan 19 2015 16:18:12 for mightymandel by
1.8.1.2