Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/src/smlnj-lib/Util/format.sml
ViewVC logotype

Diff of /sml/trunk/src/smlnj-lib/Util/format.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 701, Thu Aug 31 08:46:43 2000 UTC revision 702, Sun Sep 3 01:30:53 2000 UTC
# Line 225  Line 225 
225                      | (BoolField, BOOL true) => padFn "true"                      | (BoolField, BOOL true) => padFn "true"
226                      | (StrField, ATOM s) => padFn(Atom.toString s)                      | (StrField, ATOM s) => padFn(Atom.toString s)
227                      | (StrField, STR s) => padFn s                      | (StrField, STR s) => padFn s
228                      | (RealField{prec, format=F_Format}, REAL r) => let                      | (RealField{prec, format}, REAL r) =>
229                          val {sign, mantissa} = RealFormat.realFFormat(r, prec)                          if (Real.isFinite r)
230                              then (case format
231                                 of F_Format => let
232                                      val {sign, mantissa} =
233                                            RealFormat.realFFormat(r, prec)
234                          val sign = doRealSign sign                          val sign = doRealSign sign
235                          in                          in
236                            if ((prec = 0) andalso (#base flags))                            if ((prec = 0) andalso (#base flags))
237                              then padFn(concat[sign, mantissa, "."])                              then padFn(concat[sign, mantissa, "."])
238                              else padFn(sign ^ mantissa)                              else padFn(sign ^ mantissa)
239                          end                          end
240                      | (RealField{prec, format=E_Format isCap}, REAL r) => let                                | E_Format isCap => let
241                          val {sign, mantissa, exp} = RealFormat.realEFormat(r, prec)                                    val {sign, mantissa, exp} =
242                                            RealFormat.realEFormat(r, prec)
243                          val sign = doRealSign sign                          val sign = doRealSign sign
244                          val expStr = doExpSign(exp, isCap)                          val expStr = doExpSign(exp, isCap)
245                          in                          in
246                            if ((prec = 0) andalso (#base flags))                            if ((prec = 0) andalso (#base flags))
247                              then padFn(concat(sign :: mantissa :: "." :: expStr))                                        then padFn(concat(sign :: mantissa :: "."
248                                            :: expStr))
249                              else padFn(concat(sign :: mantissa :: expStr))                              else padFn(concat(sign :: mantissa :: expStr))
250                          end                          end
251                      | (RealField{prec, format=G_Format isCap}, REAL r) => let                                | G_Format isCap => let
252                          val prec = if (prec = 0) then 1 else prec                          val prec = if (prec = 0) then 1 else prec
253                          val {sign, whole, frac, exp} =                          val {sign, whole, frac, exp} =
254                                RealFormat.realGFormat(r, prec)                                RealFormat.realGFormat(r, prec)
255                          val sign = doRealSign sign                          val sign = doRealSign sign
256                          val expStr = (case exp                          val expStr = (case exp
257                                 of SOME e => doExpSign(e, isCap)                                 of SOME e => doExpSign(e, isCap)
258                                  | NONE => [])                                            | NONE => []
259                                            (* end csae *))
260                          val num = if (#base flags)                          val num = if (#base flags)
261                                  then let                                  then let
262                                    val diff = prec - ((size whole) + (size frac))                                            val diff =
263                                                    prec - ((size whole) + (size frac))
264                                    in                                    in
265                                      if (diff > 0)                                      if (diff > 0)
266                                        then zeroRPad(frac, (size frac)+diff)                                        then zeroRPad(frac, (size frac)+diff)
# Line 264  Line 272 
272                          in                          in
273                            padFn(concat(sign::whole::frac::expStr))                            padFn(concat(sign::whole::frac::expStr))
274                          end                          end
275                                (* end case *))
276                            else if Real.==(Real.negInf, r)
277                              then doRealSign true ^ "inf"
278                            else if Real.==(Real.posInf, r)
279                              then doRealSign false ^ "inf"
280                              else "nan"
281                      | (_, LEFT(w, arg)) => let                      | (_, LEFT(w, arg)) => let
282                          val flags = {                          val flags = {
283                                  sign = (#sign flags), neg_char = (#neg_char flags),                                  sign = (#sign flags), neg_char = (#neg_char flags),

Legend:
Removed from v.701  
changed lines
  Added in v.702

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0