1*55aa4ea1SJoseph Huber //===-- Extended-precision atan2 function ---------------------------------===// 2*55aa4ea1SJoseph Huber // 3*55aa4ea1SJoseph Huber // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*55aa4ea1SJoseph Huber // See https://llvm.org/LICENSE.txt for license information. 5*55aa4ea1SJoseph Huber // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*55aa4ea1SJoseph Huber // 7*55aa4ea1SJoseph Huber //===----------------------------------------------------------------------===// 8*55aa4ea1SJoseph Huber 9*55aa4ea1SJoseph Huber #include "src/math/atan2l.h" 10*55aa4ea1SJoseph Huber #include "src/__support/common.h" 11*55aa4ea1SJoseph Huber #include "src/__support/macros/properties/types.h" 12*55aa4ea1SJoseph Huber #include "src/math/atan2.h" 13*55aa4ea1SJoseph Huber 14*55aa4ea1SJoseph Huber namespace LIBC_NAMESPACE_DECL { 15*55aa4ea1SJoseph Huber 16*55aa4ea1SJoseph Huber // TODO: Implement this for extended precision. 17*55aa4ea1SJoseph Huber LLVM_LIBC_FUNCTION(long double, atan2l, (long double y, long double x)) { 18*55aa4ea1SJoseph Huber #if defined(LIBC_TYPES_LONG_DOUBLE_IS_FLOAT64) 19*55aa4ea1SJoseph Huber return static_cast<long double>( 20*55aa4ea1SJoseph Huber atan2(static_cast<double>(y), static_cast<double>(x))); 21*55aa4ea1SJoseph Huber #else 22*55aa4ea1SJoseph Huber #error "Extended precision is not yet supported" 23*55aa4ea1SJoseph Huber #endif 24*55aa4ea1SJoseph Huber } 25*55aa4ea1SJoseph Huber 26*55aa4ea1SJoseph Huber } // namespace LIBC_NAMESPACE_DECL 27