-/* xscreensaver, Copyright (c) 1993, 1995, 1996
- * Jamie Zawinski <jwz@netscape.com>
+/* xscreensaver, Copyright (c) 1993, 1995, 1996, 1998
+ * Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
XDrawPoints (dpy, win, gc, points, num_points, CoordModeOrigin);
num_points = 0;
/* if (delay) usleep (delay); */
XDrawPoints (dpy, win, gc, points, num_points, CoordModeOrigin);
num_points = 0;
/* if (delay) usleep (delay); */
+
+ /* Scale back when values get very large. Spot sez:
+ "I think this happens on HPUX. I think it's non-IEEE
+ to generate an exception instead of a silent NaN."
+ */
+ if ((abs(x) > 1.0E5) || (abs(y) > 1.0E5))
+ x = x / y;
+
nx = f[0][0][i] * x + f[0][1][i] * y + f[0][2][i];
ny = f[1][0][i] * x + f[1][1][i] * y + f[1][2][i];
if (i < anum)
nx = f[0][0][i] * x + f[0][1][i] * y + f[0][2][i];
ny = f[1][0][i] * x + f[1][1][i] * y + f[1][2][i];
if (i < anum)
total_points = 0;
(void) recurse (0.0, 0.0, 0, dpy, window);
XDrawPoints (dpy, window, gc, points, num_points, CoordModeOrigin);
total_points = 0;
(void) recurse (0.0, 0.0, 0, dpy, window);
XDrawPoints (dpy, window, gc, points, num_points, CoordModeOrigin);