-#else
- // Read number as string
- string str;
- if (n.find_string("number", str)) {
- istrstream f(str.c_str(), str.size() + 1);
- cl_idecoded_float re, im;
- char c;
- f.get(c);
- switch (c) {
- case 'R': // Integer-decoded real number
- f >> re.sign >> re.mantissa >> re.exponent;
- *value = re.sign * re.mantissa * ::expt(cl_float(2.0, cl_default_float_format), re.exponent);
- break;
- case 'C': // Integer-decoded complex number
- f >> re.sign >> re.mantissa >> re.exponent;
- f >> im.sign >> im.mantissa >> im.exponent;
- *value = ::complex(re.sign * re.mantissa * ::expt(cl_float(2.0, cl_default_float_format), re.exponent),
- im.sign * im.mantissa * ::expt(cl_float(2.0, cl_default_float_format), im.exponent));
- break;
- default: // Ordinary number
- f.putback(c);
- f >> *value;
- break;
- }
- }
-#endif