1*a164e4c8SXin Li // Copyright (c) 2004, Hewlett-Packard Development Company, L.P. 2*a164e4c8SXin Li // 3*a164e4c8SXin Li // Permission is granted free of charge to copy, modify, use and distribute 4*a164e4c8SXin Li // this software provided you include the entirety of this notice in all 5*a164e4c8SXin Li // copies made. 6*a164e4c8SXin Li // 7*a164e4c8SXin Li // THIS SOFTWARE IS PROVIDED ON AN AS IS BASIS, WITHOUT WARRANTY OF ANY 8*a164e4c8SXin Li // KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, 9*a164e4c8SXin Li // WARRANTIES THAT THE SUBJECT SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT 10*a164e4c8SXin Li // FOR A PARTICULAR PURPOSE OR NON-INFRINGING. HEWLETT-PACKARD ASSUMES 11*a164e4c8SXin Li // NO RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. 12*a164e4c8SXin Li // SHOULD THE SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, 13*a164e4c8SXin Li // HEWLETT-PACKARD ASSUMES NO COST OR LIABILITY FOR ANY 14*a164e4c8SXin Li // SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES 15*a164e4c8SXin Li // AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY SUBJECT SOFTWARE IS 16*a164e4c8SXin Li // AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. 17*a164e4c8SXin Li // 18*a164e4c8SXin Li // UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING, 19*a164e4c8SXin Li // WITHOUT LIMITATION, NEGLIGENCE OR STRICT LIABILITY), CONTRACT, OR 20*a164e4c8SXin Li // OTHERWISE, SHALL HEWLETT-PACKARD BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, 21*a164e4c8SXin Li // INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER WITH RESPECT TO THE 22*a164e4c8SXin Li // SOFTWARE INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK 23*a164e4c8SXin Li // STOPPAGE, LOSS OF DATA, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL 24*a164e4c8SXin Li // OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF HEWLETT-PACKARD SHALL 25*a164e4c8SXin Li // HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. 26*a164e4c8SXin Li // THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY RESULTING 27*a164e4c8SXin Li // FROM HEWLETT-PACKARD's NEGLIGENCE TO THE EXTENT APPLICABLE 28*a164e4c8SXin Li // LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE 29*a164e4c8SXin Li // EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THAT 30*a164e4c8SXin Li // EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. 31*a164e4c8SXin Li // 32*a164e4c8SXin Li 33*a164e4c8SXin Li package com.hp.creals; 34*a164e4c8SXin Li 35*a164e4c8SXin Li /** 36*a164e4c8SXin Li * A scientific notation representation of an approximation to a constructive 37*a164e4c8SXin Li * real. 38*a164e4c8SXin Li * Generated by CR.toStringFloatRep. 39*a164e4c8SXin Li */ 40*a164e4c8SXin Li public class StringFloatRep { StringFloatRep(int s, String m, int r, int e)41*a164e4c8SXin Li StringFloatRep(int s, String m, int r, int e) { 42*a164e4c8SXin Li sign = s; 43*a164e4c8SXin Li mantissa = m; 44*a164e4c8SXin Li radix = r; 45*a164e4c8SXin Li exponent = e; 46*a164e4c8SXin Li } 47*a164e4c8SXin Li /** 48*a164e4c8SXin Li * The sign associated with this approximation. May be -1, _1, or zero. 49*a164e4c8SXin Li */ 50*a164e4c8SXin Li public int sign; 51*a164e4c8SXin Li /** 52*a164e4c8SXin Li * A string representation of the mantissa. The decimal point is implicitly 53*a164e4c8SXin Li * to the left of the string of digits, and is not explicitly represented. 54*a164e4c8SXin Li */ 55*a164e4c8SXin Li public String mantissa; 56*a164e4c8SXin Li /** 57*a164e4c8SXin Li * The radix of the representation. Also the base of the exponent field. 58*a164e4c8SXin Li */ 59*a164e4c8SXin Li public int radix; 60*a164e4c8SXin Li /** 61*a164e4c8SXin Li * The mantissa is scaled by radix**exponent. 62*a164e4c8SXin Li */ 63*a164e4c8SXin Li public int exponent; 64*a164e4c8SXin Li 65*a164e4c8SXin Li /** 66*a164e4c8SXin Li * Produce a textual representation including the sign and exponent. 67*a164e4c8SXin Li */ toString()68*a164e4c8SXin Li public String toString() { 69*a164e4c8SXin Li return 70*a164e4c8SXin Li (sign < 0? "-" : "") + mantissa + "E" + Integer.toString(exponent) 71*a164e4c8SXin Li + (radix == 10? "" : "(radix " + radix + ")"); 72*a164e4c8SXin Li } 73*a164e4c8SXin Li } 74