Imaginary Numbers
Complex Plane (graphing)
Solving high degree imaginary numbers
seen from United States
seen from Germany

seen from United States

seen from Singapore

seen from Türkiye
seen from China

seen from Germany
seen from United Kingdom
seen from Germany

seen from Germany
seen from United States

seen from United States
seen from China
seen from Canada
seen from United States
seen from Serbia

seen from India
seen from Mexico
seen from United States
seen from China
Imaginary Numbers
Complex Plane (graphing)
Solving high degree imaginary numbers

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
The best analogy for aros who like math
Consider ℝ², the real coordinate plane, and ℂ, the complex plane.
Every number in ℂ can be written in the form a + bi, where a and b are elements of ℝ², and i, the imaginary number, is an element of ℂ.
As you can see, elements in the complex plane consist of both real and imaginary parts. But elements in the real plane have only real parts and no complex/imaginary parts.
So, how does this relate to aromanticism?
Let's consider platonic vs romantic attraction. For me and many other aros, we don't experience romantic attraction. And for most allos, they experience both romantic and platonic attraction.
So what if platonic attraction was the real plane and romantic attraction was the complex plane. This would suggest that people in ℝ² experience only platonic attraction but have no grasp of what romantic attraction feels like. This also shows how allos in ℂ experience both platonic and romantic attraction, given how complex numbers contain both real and imaginary parts.
This is probably a massive oversimplification and I know this doesn't account for aplatonic and loveless aros but this analogy really helped me grasp why I don't get romantic attraction.
And so, my username is Latin: haesi perpetuo in ℝ².
Forever stuck in ℝ².
It's not like I'm unhappy about not feeling romantic attraction but I just want to know how most other people feel. It's hard being left in the dark because my brain decided that it didn't want to experience it. But, such is life and this is the start of me accepting who I am.
Riemann zeta function: leveraging main bulb repetition to speed-up fractal rendering
In my previous post, I demonstrated how any fixed image of a certain size centred on the origin can be deformed and repeated in arbitrary regions of the complex plane by the action of the Riemann zeta function.
In practice, for each point, s, in the relevant region of the complex plane, ζ(s) is calculated. If the real and imaginary parts of ζ(s) are within the bounds of the area covered by the fixed image, the colour of the pixel at the {x,y} value {Re(ζ(s), Im( ζ(s))} can be used to colour the pixel at s.
If the fixed image is a high resolution image of the iteration fractal of the Riemann zeta function, we can avoid iterating every point, s, in the target region of the complex plane by using the fixed image as a "lookup table".
Here is the resultant plot for the region of the complex plane covering -2 Re(s) < 5 and 80 < Im(s) < 100 at a resolution of 100 pixels per unit. The image has been rotated clockwise by 90° such that the imaginary axis runs from left to right. The image is derived from a 5001 x 5001 pixel fixed image "lookup table" whose points, f, are in the following ranges: -25 < Re(f) < 25 and -25 Im(f) < 25, also at a resolution of 100 pixels per unit:
-2 < Re(s) < 5, -80 < Im(s) < 100, 100 pixels per unit
It is clear that, for values of s where Re(s) > 0, there is insufficient resolution in the lookup table to give decent resolution in the final image. In the positive real half plane, the value of ζ(s) tends to 1. On that basis, it makes sense to increase the resolution of the lookup table close to the pole of the Riemann zeta function at f = 1.
However, given that the resolution in the rest of the generated image is reasonable, there is no need to create a very large lookup table with a resolution of, say, 1000 pixels per unit. Instead, we can create a series of "nested" lookup tables of increasing resolution centred on the pole, and programmatically decide which to consult after the value of ζ(s) has been calculated.
Here is the resultant plot for same region of the complex plane as above, but derived from a series of four 5001 x 5001 pixel fixed image lookup tables whose points, f, are centred over the pole and which have resolutions of 100, 1000, 10000 and 100000 pixels per unit:
-2 < Re(s) < 5, -80 < Im(s) < 100, 100 pixels per unit
The resolution of the region where Re(s) > 0 is much improved.
Here are the fixed image lookup tables used to generate the above image. Note that they are all centred on the pole at f = 1:
-24.0 < Re(f) < 26.0, -25.0 < Im(f) < 25.0, 100 pixels per unit
-1.50 < Re(f) < 3.50, -2.50 < Im(f) < 2.50, 1000 pixels per unit
0.75 < Re(f) < 1.25, -0.25 < Im(f) < 0.25, 10000 pixels per unit
0.975 < Re(f) < 1.025, -0.025 < Im(f) < 0.025, 100000 pixels per unit
These tables are good for images where Re(s) < 16. Experiments suggest that a further fixed image lookup table with a resolution of 1000000 can extend the scope even further into the positive real half plane. However, I am typically interested in fractal images confined to the region where -2 < Re(s) < 5, so I tend to use only the above four fixed image lookup tables.
Another obvious limitation of using fixed image lookup tables to avoid formal iteration of each point, s, is that the values of ζ(s) where Re(s) < 0 are far too large to be accommodated by any reasonable lookup table. Pixels outside the bounds of the lowest resolution lookup table are therefore coloured black.
However, one aspect of these regions is that iteration is not very costly programmatically provided that appropriate bail-out limits are applied. The vast majority of points in this region blow-up on iteration, and they do so quickly.
Therefore, because only a few iterations are required for the majority of pixels outside the bounds of the lookup tables, it is a trivial matter to provide a function which enables the user to choose to formally iterate any pixel that falls outside the bounds of the lookup tables in order to "fill in" the black regions without too much impact on resolution time.
Here are some resultant images with and without fill in:
-2 < Re(s) < 5, 80 < Im(s) < 100, 100 pixels per unit, without fill-in
-2 < Re(s) < 5, 80 < Im(s) < 100, 100 pixels per unit, with fill-in
-2 < Re(s) < 5, 980 < Im(s) < 1000, 100 pixels per unit, without fill-in
-2 < Re(s) < 5, 980 < Im(s) < 1000, 100 pixels per unit, with fill-in
-2 < Re(s) < 5, 9980 < Im(s) < 10000, 100 pixels per unit, without fill-in
-2 < Re(s) < 5, 9980 < Im(s) < 10000, 100 pixels per unit, with fill-in
-2 < Re(s) < 5, 99980 < Im(s) < 100000, 100 pixels per unit, without fill-in
-2 < Re(s) < 5, 99980 < Im(s) < 100000, 100 pixels per unit, with fill-in
-2 < Re(s) < 5, 999980 < Im(s) < 1000000, 100 pixels per unit, without fill-in
-2 < Re(s) < 5, 999980 < Im(s) < 1000000, 100 pixels per unit, with fill-in
Using fixed image lookup tables leads to a reasonable speed up in rendering performance and good reproducibility. The resultant images are essentially indistinguishable from those generated by zeta_machine.
The rendering of images very high up the imaginary axis is still painfully slow, however, because for every point, s, ζ(s) must be calculated at least once, and the Euler Maclaurin summation requires a partial sum to be calculated with a number of terms in the order of |s|.
Zeta functions: main bulb repetition in iteration fractals
In previous posts on this page, and in a recent talk on this subject, I have remarked that the iteration fractal in the neighbourhood of each non-trivial zero of the Riemann zeta function is a scaled and distorted reproduction of the main bulb.
One way of evidencing this phenomenon is to generate the fractal for each starting value, s, in a random section of the complex plane and, for each value of s where the real and imaginary parts of ζ(s) are both within some fixed distance from the origin, to place a pixel at that point with the same colour as the colour ascribed to s in the fractal image.
For example, the following iteration fractal image covers the section of the complex plane between -2 ≤ Re(s) ≤ 13 and 100 ≤ Im(s) ≤ 150, with a resolution of 100 pixels per unit. The image has been rotated 90° clockwise such that the imaginary axis runs from left to right:
The image contains 7,506,501 pixels. For many of the individual starting values, s, the absolute values of the real and imaginary parts of ζ(s) are less than 25. If each qualifying pixel is plotted in a simple x,y plot covering the section of the complex plane between -25 ≤ Re(s) ≤ 25 and -25 ≤ Im(s) ≤ 25, using the colour of the pixel ascribed to the starting value, s, in the above image, the result is as follows:
It is clear that the overall image corresponds to the main bulb of the iteration fractal, but the density of coverage away from the origin decreases rapidly.
The same logic can be applied to Hurwitz zeta functions, ζ(s, a), with rational a.
For example, the following iteration fractal image for the Hurwitz zeta function ζ(s, 0.75) covers the section of the complex plane between -2 ≤ Re(s) ≤ 13 and 100 ≤ Im(s) ≤ 150, with a resolution of 100 pixels per unit. The image has been rotated 90° clockwise such that the imaginary axis runs from left to right:
As before, for many of the individual starting values, s, the absolute values of the real and imaginary parts of ζ(s, 0.75) are less than 25. If each qualifying pixel is plotted in a simple x,y plot covering the section of the complex plane between -25 ≤ Re(s) ≤ 25 and -25 ≤ Im(s) ≤ 25, using the colour of the pixel ascribed to the starting value, s, in the above image, the result is as follows:
Again, it is clear that the overall image corresponds to the main bulb of the iteration fractal. The density of coverage is higher than for the Riemann zeta function.
It is also possible to work in the opposite direction.
For example, the following iteration fractal image for the Hurwitz zeta function ζ(s, 0.75) covers the section of the complex plane between -25 ≤ Re(s) ≤ 25 and 25 ≤ Im(s) ≤ 25, with a resolution of 40 pixels per unit. The image has been rotated 90° clockwise such that the imaginary axis runs from left to right:
The absolute value of the real and imaginary parts of ζ(s, 0.75) for each starting value, s, in a given section of the complex plane may be less 25. If so, we can colour the pixel corresponding to s using the corresponding pixel colour from the above image.
The result for the section of the complex plane covering -2 ≤ Re(s) ≤ 13 and 100 ≤ Im(s) ≤ 150, with a resolution of 100 pixels per unit, is as follows:
The image constitutes a reasonable approximation of the directly calculated fractal (see above) and takes considerably less time to generate. The black areas above and below the image correspond to places where the real and/or imaginary parts of ζ(s, 0.75) are greater than 25.
Another way to visualise this scaling and distortion phenomenon caused by zeta functions is to repeat the previous experiment with an arbitrary geometric design.
For example, the following image corresponds to the section of the complex plane covering -25 ≤ Re(s) ≤ 25 and 25 ≤ Im(s) ≤ 25, with a resolution of 40 pixels per unit. The image has been rotated 90° clockwise such that the imaginary axis runs from left to right:
The following image is formed by calculating ζ(s) for each staring value, s, in the section of the complex plane covering -2 ≤ Re(s) ≤ 13 and 200 ≤ Im(s) ≤ 220 and colouring those pixels where the absolute value of the real and imaginary parts of ζ(s) are less than 25 using the corresponding pixel colour from the above image. The result is as follows:
The overall pattern is preserved with repetition, but it is clear that the green and yellow sections are twisted such that they face upwards rather than their downward orientation in the original image.
Here is the corresponding image for ζ(s, 0.35):
It is clear that, not only are the green and yellow sections twisted above, there is a repetition below where the blue and red sections are twisted such that they face downwards rather than their upward orientation in the original image.
Here is the corresponding image for ζ(s, 0.75):
The repetition in the lower section has persisted. Additional experiments indicate that this repetition below is a feature of all Hurwitz zeta functions ζ(s, a) with rational a.
The same kind of distortion can be applied to any image arbitrarily centred on the origin in the complex plane. The results are particularly disconcerting when the original image is a human face. For example, here is a computer generated image of a human face copied from the website thispersondoesnotexist.com:
Here is the distortion caused by ζ(s, 0.35) in the section of the complex plane covering -2 ≤ Re(s) ≤ 13 and 200 ≤ Im(s) ≤ 220:
Here is the corresponding distortion caused by ζ(s, 0.75):
The inversion / twisting, and upper and lower repetitions that are a feature of Hurwitz zeta functions are easy to discern.

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
The Mandelbrot Set and How It Works
I've included this one because of how well it quickly covers the foundations of the complex plane, as well as the detailing of how the Mandelbrot Set is commonly colored.
An informative video about the Mandelbrot set that explains the mathematics, then provides some thought-provoking sentiment.
Riemann zeta function: more evidence of self-similarity in the iteration fractal
In my last post, I provided some evidence that fractal feature details are reproduced at predictable locations, and can be revealed with appropriate scaling.
In this post, I provide some indirect evidence of the scaling of first generation reproductions.
The following iteration fractal image covers the section of the complex plane between -10 ≤ Re(s) ≤ 10 and 40 ≤ Im(s) ≤ 55, with a resolution of 100 pixels per unit. The image has been rotated 90° clockwise such that the imaginary axis runs from left to right:
The image shows five non-trivial zeros. Associated with each non-trivial zero are two first generation reproductions of the main arms of the fractal. These reproductions appear as substantially vertical, mainly orange, tapered projections into the negative real half-plane. One can envisage that these reproductions, like the main arms, have infinite length, albeit invisible at this resolution.
Arranged along each of the five first generation reproductions that correspond to the positive main arm are a series of greyscale dots. These dots have been produced using the delta function of zeta_machine. In each case, they show all points, s, where ζ(s) is within a certain distance of a target value.
Although the grey dots appear similar in size, they span a remarkably wide range of delta target and distance values.
In order of increasing distance from the critical line, the values for each target (”T”) and distance (”D”) pair are as follows:
T: ζ(s) = 0.5 + 1,000,000i, D = 200,000
T: ζ(s) = 0.5 + 10,000,000i, D = 2,000,000
T: ζ(s) = 0.5 + 100,000,000i, D = 20,000,000
Putting it another way, each grey disk has a |ζ(s)| radius D, and is centred on value ζ(s) = T.
The even spacing between the grey disks associated with each first generation reproduction, coupled with the order of magnitude increase in scale between disks, is evidence of an exponential rate of change in scale.
Unfortunately, zeta_machine is unable to calculate ζ(s) where |Im(s)| > 1,000,000, so I cannot show what the iteration fractal looks like under the grey disks. However, delta images in the neighbourhood of the disks at very large scales suggest that the Riemann zeta function, and the corresponding iteration fractal, are well behaved.
Riemann zeta function: self-similarity in the iteration fractal
As I have previously noted, the main “arms” of the iteration fractal of the Riemann zeta function appear to be reproduced, with distortion, at every level of magnification.
The first generation reproductions are particularly noticeable in the left half of the complex plane where Re(s) << 0 (thin, tapering, almost vertical projections), and in the right half of the complex plane where Re(s) > 1 (thicker, but otherwise similar).
Until now, I have assumed, without proof, that any fractal feature that appears on the main arms can be located on any reproduction given sufficient magnification.
In this post I provide evidence in support of my assumption.
First, I have set out below an image of the (positive) main fractal arm in the vicinity of the first fractal island whose corresponding non-trivial zero is at approximately 0.5 + 1686.421i. The image covers the section of the complex plane between -1 ≤ Re(s) ≤ 5 and 1681 ≤ Im(s) ≤ 1691, with a resolution of 100 pixels per unit.
All of the images in this post have been rotated 90° clockwise such that the imaginary axis runs from left to right:
My intention was to locate a reproduction of this first fractal island on a randomly chosen first generation reproduction of the main arms. I was particularly interested to see what level of magnification would be required to render the reproduction island visible, and whether there would be any major distortion
I chose a random section of the main arms (-5 ≤ Re(s) ≤ 5, 50 ≤ Im(s) ≤ 60) and used the delta function of zeta_machine to identify regions where ζ(s) was within a certain distance of 0.5 + 1686.421i.
Initially, I used a resolution of 50 pixels per unit and a delta distance value of 50. Despite such a wide “net”, I only identified a couple of qualifying pixels. I repeated the analysis at resolutions of 2000, 20000 and 200000 pixels per unit in order to obtain a more accurate value of s where ζ(s) = 0.5 + 1686.421i.
The following image shows the original area of interest, with a magenta dot highlighting the sub-region where the delta evidence indicated the fractal island reproduction would be found. It is clear that the region is located in a continuation of a first generation reproduction of the (positive) main arm:
Having identified the region of interest, I used the zeta_machine image function to plot the iteration fractal with a resolution of 2000000 pixels per unit:
As anticipated, the resultant image is a perfect reproduction of the original island, albeit rotated 90° anticlockwise as would be expected given the angle between the main arms and the first generation reproductions.
In this final plot, the point, s, where ζ(s) = 0.5 + 1686.421i is located at approximately s = -2.92859 + 53.99008i. Obviously, ζ(ζ(s)) at this point will be 0.
The plot settings are:
Real low: -2.92884
Real high: -2.92834
Imaginary low: 53.98983
Imaginary high: 53.99033
Resolution: 2000000
I assume that reproductions of this first fractal island, and any other feature, can similarly be located using the delta function to identify qualifying regions with greater and greater accuracy before plotting the relevant image.