/*************************************************************************/ /* */ /* Copyright (c) 1994 Stanford University */ /* */ /* All rights reserved. */ /* */ /* Permission is given to use, copy, and modify this software for any */ /* non-commercial purpose as long as this copyright notice is not */ /* removed. All other uses, including redistribution in whole or in */ /* part, are forbidden without prior written permission. */ /* */ /* This software is provided with absolutely no warranty and no */ /* support. */ /* */ /*************************************************************************/ #include #include #include #include "defs.h" #include "memory.h" long Number_Of_Processors; double Timestep_Dur; real Softening_Param; long Expansion_Terms; real RoundReal (real val) { double shifter; double frac; long exp; double shifted_frac; double new_frac; double temp; real ret_val; shifter = pow((double) 10, (double) REAL_DIG - 2); frac = frexp((double) val, &exp); shifted_frac = frac * shifter; temp = modf(shifted_frac, &new_frac); new_frac /= shifter; ret_val = (real) ldexp(new_frac, exp); return ret_val; } void PrintComplexNum (complex *c) { if (c->i >= (real) 0.0) printf("%e + %ei", c->r, c->i); else printf("%e - %ei", c->r, -c->i); } void PrintVector (vector *v) { printf("(%10.5f, %10.5f)", v->x, v->y); } void LockedPrint (char *format_str, ...) { va_list ap; va_start(ap, format_str); LOCK(G_Memory->io_lock); fflush(stdout); vfprintf(stdout, format_str, ap); fflush(stdout); UNLOCK(G_Memory->io_lock); va_end(ap); }