What does it mean wnen the printed value of a variable is “NaN”?
NaN
means “Not a Number”
println(0.0/0.0);
println(sqrt(-1));
why not show the code what produces it?
Lets assume you are talking about a float
. In Java a float
is stored in 4 bytes of memory that’s 32 bits, since each bit can be 0 or 1 that gives us 4294967296 different combinations to encode a floating point number. Not all those combinations represent a valid floating point number hence Not a Number or NaN
Hi, this is the code that produces NaN:
void setup()
{
size(1000,1000);
background(255);
}
void draw()
{
float x,y,xm,xM,ym,yM,A,B,inc,Zx,Zy;
xm = -10; xM = 10; ym = -10; yM = 10;
inc = (xM-xm)/1000;
x = xm; y = ym;
A = (x - xm)/(xM-xm)*1000;
B = (y-ym)/(yM-ym)*1000;
println(x,y,inc);
for (int i = 0; i < 1000; i=i+1)
{
for (int k = 0; k < 1000; k++)
{
for (int l = 0; l < 20 ; l++)
{ println(x,y);
Zx = x*x-y*y;
Zy = 2*x*y;
if( Zx*Zx + Zy*Zy < 10)
{A = (x - xm)/(xM-xm)*1000;
B = (y-ym)/(yM-ym)*1000;
stroke(l);
point(A,B);
}
x = Zx;
y = Zy;
}
y = ym + k*inc;
}
x = xm + i*inc;
}
exit();
}
that code must be posted in the
</> Preformatted text
from the editor menu
Zx = xx-yy;
Zy = 2xy;
this code can not run.
BUT
should it mean:
Zx = x*x-y*y;
Zy = 2*x*y;
the code runs and produce your NaN error.
try
println( "float min: "+Float.MIN_VALUE+ " max: "+Float.MAX_VALUE);
that tells you the range of possible FLOAT numbers
your loops do
x = Zx = x*x-y*y;
after 7 loops that value is out of range…
and the position you calculate for the points
point(A,B);
is always 0 , 0
sorry but to run that math 20 000 000 times ( points ) is questionable
Thank you very much.
It’s obvious that I have some serious misconceptions, is there any book that explains in comprehensvly processing functioning?
please repair your above code posting first.
i asked you to try one line of code to understand the floating point number range
what was the result?
is there a number type that can cover a bigger number range? YES “double”
would it help in your case / math ? i think NOT
yes there are books,
but also
- the reference https://processing.org/reference/
- the examples https://processing.org/examples/
++PDE / File / Examples /… - add loadable examples
++PDE / Tools / Add Tool / Examples / - the tutorials https://processing.org/tutorials/
- the videos http://learningprocessing.com/videos/
all might depend of YOUR best way of learning.
the problem is that from you code it is not clear
what you want to do?
- -1- cover the canvas with points and find some nice way to color them?
- -2- use 20 000 000 points to draw some structure on the canvas ?spiral?..
so for -1-:
show a easy start:
void setup() {
size(500, 500);
colorMode(HSB, width, 100, 100);
}
void draw() {
many_points();
}
void many_points() {
for ( int x = 0; x < width; x++)
for ( int y = 0; y < height; y++ ) {
stroke(x, 100, 100);
point(x, y);
}
}
Again, thank you very much!!!