// 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 Asin(x float64) float64
TEXT ·Asin(SB),NOSPLIT,$0
	FMOVD   x+0(FP), F0  // F0=sin(x)
	FMOVD   F0, F1       // F0=sin(x), F1=sin(x)
	FMULD   F0, F0       // F0=sin(x)*sin(x), F1=sin(x)
	FLD1                 // F0=1, F1=sin(x)*sin(x), F2=sin(x)
	FSUBRDP F0, F1       // F0=1-sin(x)*sin(x) (=cos(x)*cos(x)), F1=sin(x)
	FSQRT                // F0=cos(x), F1=sin(x)
	FPATAN               // F0=arcsin(sin(x))=x
	FMOVDP  F0, ret+8(FP)
	RET

// func Acos(x float64) float64
TEXT ·Acos(SB),NOSPLIT,$0
	FMOVD   x+0(FP), F0  // F0=cos(x)
	FMOVD   F0, F1       // F0=cos(x), F1=cos(x)
	FMULD   F0, F0       // F0=cos(x)*cos(x), F1=cos(x)
	FLD1                 // F0=1, F1=cos(x)*cos(x), F2=cos(x)
	FSUBRDP F0, F1       // F0=1-cos(x)*cos(x) (=sin(x)*sin(x)), F1=cos(x)
	FSQRT                // F0=sin(x), F1=cos(x)
	FXCHD   F0, F1       // F0=cos(x), F1=sin(x)
	FPATAN               // F0=arccos(cos(x))=x
	FMOVDP	F0, ret+8(FP)
	RET
