Home | History | Annotate | Download | only in math
      1 // Copyright 2010 The Go Authors.  All rights reserved.
      2 // Use of this source code is governed by a BSD-style
      3 // license that can be found in the LICENSE file.
      4 
      5 #include "textflag.h"
      6 
      7 // func Frexp(f float64) (frac float64, exp int)
      8 TEXT Frexp(SB),NOSPLIT,$0
      9 	FMOVD   f+0(FP), F0   // F0=f
     10 	FXAM
     11 	FSTSW   AX
     12 	SAHF
     13 	JNP     nan_zero_inf
     14 	JCS     nan_zero_inf
     15 	FXTRACT               // F0=f (0<=f<1), F1=e
     16 	FMULD  $(0.5), F0     // F0=f (0.5<=f<1), F1=e
     17 	FMOVDP  F0, frac+8(FP)   // F0=e
     18 	FLD1                  // F0=1, F1=e
     19 	FADDDP  F0, F1        // F0=e+1
     20 	FMOVLP  F0, exp+16(FP)  // (int=int32)
     21 	RET
     22 nan_zero_inf:
     23 	FMOVDP  F0, frac+8(FP)   // F0=e
     24 	MOVL    $0, exp+16(FP)  // exp=0
     25 	RET
     26