// Copyright 2010 The Go Authors.  All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

#include "textflag.h"

// func Frexp(f float64) (frac float64, exp int)
TEXT ·Frexp(SB),NOSPLIT,$0
	FMOVD   f+0(FP), F0   // F0=f
	FXAM
	FSTSW   AX
	SAHF
	JNP     nan_zero_inf
	JCS     nan_zero_inf
	FXTRACT               // F0=f (0<=f<1), F1=e
	FMULD  $(0.5), F0     // F0=f (0.5<=f<1), F1=e
	FMOVDP  F0, frac+8(FP)   // F0=e
	FLD1                  // F0=1, F1=e
	FADDDP  F0, F1        // F0=e+1
	FMOVLP  F0, exp+16(FP)  // (int=int32)
	RET
nan_zero_inf:
	FMOVDP  F0, frac+8(FP)   // F0=e
	MOVL    $0, exp+16(FP)  // exp=0
	RET
