mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-06-27 23:08:31 +00:00
Add tests for the greatest of all libm functions
This commit is contained in:
parent
bfef17eb6d
commit
937d921018
4 changed files with 319 additions and 28 deletions
|
@ -1,7 +1,7 @@
|
|||
/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8 -*-│
|
||||
│vi: set et ft=asm ts=8 tw=8 fenc=utf-8 :vi│
|
||||
/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
|
||||
│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi│
|
||||
╞══════════════════════════════════════════════════════════════════════════════╡
|
||||
│ Copyright 2020 Justine Alexandra Roberts Tunney │
|
||||
│ Copyright 2021 Justine Alexandra Roberts Tunney │
|
||||
│ │
|
||||
│ Permission to use, copy, modify, and/or distribute this software for │
|
||||
│ any purpose with or without fee is hereby granted, provided that the │
|
||||
|
@ -16,14 +16,14 @@
|
|||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/macros.internal.h"
|
||||
.source __FILE__
|
||||
#include "libc/math.h"
|
||||
|
||||
// Returns arc tangent of 𝑦/𝑥.
|
||||
//
|
||||
// @param 𝑦 is float scalar in low quarter of %xmm0
|
||||
// @param 𝑥 is float scalar in low quarter of %xmm1
|
||||
// @return float scalar in low quarter of %xmm0
|
||||
atan2f: ezlea atan2l,ax
|
||||
jmp _f2ld2
|
||||
.endfn atan2f,globl
|
||||
/**
|
||||
* Returns arc tangent of 𝑦/𝑥.
|
||||
* @note the greatest of all libm functions
|
||||
*/
|
||||
double atan2(double y, double x) {
|
||||
long double st;
|
||||
asm("fpatan" : "=t"(st) : "0"((long double)x), "u"((long double)y) : "st(1)");
|
||||
return st;
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8 -*-│
|
||||
│vi: set et ft=asm ts=8 tw=8 fenc=utf-8 :vi│
|
||||
/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
|
||||
│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi│
|
||||
╞══════════════════════════════════════════════════════════════════════════════╡
|
||||
│ Copyright 2020 Justine Alexandra Roberts Tunney │
|
||||
│ Copyright 2021 Justine Alexandra Roberts Tunney │
|
||||
│ │
|
||||
│ Permission to use, copy, modify, and/or distribute this software for │
|
||||
│ any purpose with or without fee is hereby granted, provided that the │
|
||||
|
@ -16,15 +16,13 @@
|
|||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/macros.internal.h"
|
||||
.source __FILE__
|
||||
#include "libc/math.h"
|
||||
|
||||
// Returns arc tangent of 𝑦/𝑥.
|
||||
//
|
||||
// @param 𝑦 is double scalar in low half of %xmm0
|
||||
// @param 𝑥 is double scalar in low half of %xmm1
|
||||
// @return double scalar in low half of %xmm0
|
||||
// @note the greatest of all libm functions
|
||||
atan2: ezlea atan2l,ax
|
||||
jmp _d2ld2
|
||||
.endfn atan2,globl
|
||||
/**
|
||||
* Returns arc tangent of 𝑦/𝑥.
|
||||
*/
|
||||
float atan2f(float y, float x) {
|
||||
long double st;
|
||||
asm("fpatan" : "=t"(st) : "0"((long double)x), "u"((long double)y) : "st(1)");
|
||||
return st;
|
||||
}
|
|
@ -17,7 +17,6 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/macros.internal.h"
|
||||
.source __FILE__
|
||||
|
||||
// Returns arc tangent of 𝑦/𝑥.
|
||||
//
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue