summaryrefslogtreecommitdiffstats
path: root/upstream/archlinux/man3p/atan2.3p
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/archlinux/man3p/atan2.3p')
-rw-r--r--upstream/archlinux/man3p/atan2.3p241
1 files changed, 241 insertions, 0 deletions
diff --git a/upstream/archlinux/man3p/atan2.3p b/upstream/archlinux/man3p/atan2.3p
new file mode 100644
index 00000000..f958aaf6
--- /dev/null
+++ b/upstream/archlinux/man3p/atan2.3p
@@ -0,0 +1,241 @@
+'\" et
+.TH ATAN2 "3P" 2017 "IEEE/The Open Group" "POSIX Programmer's Manual"
+.\"
+.SH PROLOG
+This manual page is part of the POSIX Programmer's Manual.
+The Linux implementation of this interface may differ (consult
+the corresponding Linux manual page for details of Linux behavior),
+or the interface may not be implemented on Linux.
+.\"
+.SH NAME
+atan2,
+atan2f,
+atan2l
+\(em arc tangent functions
+.SH SYNOPSIS
+.LP
+.nf
+#include <math.h>
+.P
+double atan2(double \fIy\fP, double \fIx\fP);
+float atan2f(float \fIy\fP, float \fIx\fP);
+long double atan2l(long double \fIy\fP, long double \fIx\fP);
+.fi
+.SH DESCRIPTION
+The functionality described on this reference page is aligned with the
+ISO\ C standard. Any conflict between the requirements described here and the
+ISO\ C standard is unintentional. This volume of POSIX.1\(hy2017 defers to the ISO\ C standard.
+.P
+These functions shall compute the principal value of the arc tangent of
+.IR y /\c
+.IR x ,
+using the signs of both arguments to determine the quadrant of the
+return value.
+.P
+An application wishing to check for error situations should set
+.IR errno
+to zero and call
+.IR feclearexcept (FE_ALL_EXCEPT)
+before calling these functions. On return, if
+.IR errno
+is non-zero or \fIfetestexcept\fR(FE_INVALID | FE_DIVBYZERO |
+FE_OVERFLOW | FE_UNDERFLOW) is non-zero, an error has occurred.
+.SH "RETURN VALUE"
+Upon successful completion, these functions shall return the arc
+tangent of
+.IR y /\c
+.IR x
+in the range [\-\(*p,\(*p] radians.
+.P
+If
+.IR y
+is \(+-0 and
+.IR x
+is < 0, \(+-\(*p shall be returned.
+.P
+If
+.IR y
+is \(+-0 and
+.IR x
+is > 0, \(+-0 shall be returned.
+.P
+If
+.IR y
+is < 0 and
+.IR x
+is \(+-0, \-\(*p/2 shall be returned.
+.P
+If
+.IR y
+is > 0 and
+.IR x
+is \(+-0, \(*p/2 shall be returned.
+.P
+If
+.IR x
+is 0, a pole error shall not occur.
+.P
+If either
+.IR x
+or
+.IR y
+is NaN, a NaN shall be returned.
+.P
+If the correct value would cause underflow, a range error may occur, and
+\fIatan\fR(),
+\fIatan2f\fR(),
+and
+\fIatan2l\fR()
+shall return an implementation-defined value no greater in magnitude
+than DBL_MIN, FLT_MIN, and LDBL_MIN, respectively.
+.P
+If the IEC 60559 Floating-Point option is supported,
+.IR y /\c
+.IR x
+should be returned.
+.P
+If
+.IR y
+is \(+-0 and
+.IR x
+is \-0, \(+-\(*p shall be returned.
+.P
+If
+.IR y
+is \(+-0 and
+.IR x
+is +0, \(+-0 shall be returned.
+.P
+For finite values of \(+-\c
+.IR y
+> 0, if
+.IR x
+is \-Inf, \(+-\(*p shall be returned.
+.P
+For finite values of \(+-\c
+.IR y
+> 0, if
+.IR x
+is +Inf, \(+-0 shall be returned.
+.P
+For finite values of
+.IR x ,
+if
+.IR y
+is \(+-Inf, \(+-\(*p/2 shall be returned.
+.P
+If
+.IR y
+is \(+-Inf and
+.IR x
+is \-Inf, \(+-3\(*p/4 shall be returned.
+.P
+If
+.IR y
+is \(+-Inf and
+.IR x
+is +Inf, \(+-\(*p/4 shall be returned.
+.P
+If both arguments are 0, a domain error shall not occur.
+.SH ERRORS
+These functions may fail if:
+.IP "Range\ Error" 12
+The result underflows.
+.RS 12
+.P
+If the integer expression (\fImath_errhandling\fR & MATH_ERRNO) is
+non-zero, then
+.IR errno
+shall be set to
+.BR [ERANGE] .
+If the integer expression (\fImath_errhandling\fR & MATH_ERREXCEPT) is
+non-zero, then the underflow floating-point exception shall be raised.
+.RE
+.LP
+.IR "The following sections are informative."
+.SH EXAMPLES
+.SS "Converting Cartesian to Polar Coordinates System"
+.P
+The function below uses
+\fIatan2\fR()
+to convert a 2d vector expressed in cartesian coordinates
+(\fIx\fR,\fIy\fR) to the polar coordinates (\fIrho\fR,\fItheta\fR).
+There are other ways to compute the angle
+.IR theta ,
+using
+\fIasin\fR()
+\fIacos\fR(),
+or
+\fIatan\fR().
+However,
+\fIatan2\fR()
+presents here two advantages:
+.IP " *" 4
+The angle's quadrant is automatically determined.
+.IP " *" 4
+The singular cases (0,\fIy\fR) are taken into account.
+.P
+Finally, this example uses
+\fIhypot\fR()
+rather than
+\fIsqrt\fR()
+since it is better for special cases; see
+\fIhypot\fR()
+for more information.
+.sp
+.RS 4
+.nf
+
+#include <math.h>
+.P
+void
+cartesian_to_polar(const double x, const double y,
+ double *rho, double *theta
+ )
+{
+ *rho = hypot (x,y); /* better than sqrt(x*x+y*y) */
+ *theta = atan2 (y,x);
+}
+.fi
+.P
+.RE
+.SH "APPLICATION USAGE"
+On error, the expressions (\fImath_errhandling\fR & MATH_ERRNO) and
+(\fImath_errhandling\fR & MATH_ERREXCEPT) are independent of each
+other, but at least one of them must be non-zero.
+.SH RATIONALE
+None.
+.SH "FUTURE DIRECTIONS"
+None.
+.SH "SEE ALSO"
+.IR "\fIacos\fR\^(\|)",
+.IR "\fIasin\fR\^(\|)",
+.IR "\fIatan\fR\^(\|)",
+.IR "\fIfeclearexcept\fR\^(\|)",
+.IR "\fIfetestexcept\fR\^(\|)",
+.IR "\fIhypot\fR\^(\|)",
+.IR "\fIisnan\fR\^(\|)",
+.IR "\fIsqrt\fR\^(\|)",
+.IR "\fItan\fR\^(\|)"
+.P
+The Base Definitions volume of POSIX.1\(hy2017,
+.IR "Section 4.20" ", " "Treatment of Error Conditions for Mathematical Functions",
+.IR "\fB<math.h>\fP"
+.\"
+.SH COPYRIGHT
+Portions of this text are reprinted and reproduced in electronic form
+from IEEE Std 1003.1-2017, Standard for Information Technology
+-- Portable Operating System Interface (POSIX), The Open Group Base
+Specifications Issue 7, 2018 Edition,
+Copyright (C) 2018 by the Institute of
+Electrical and Electronics Engineers, Inc and The Open Group.
+In the event of any discrepancy between this version and the original IEEE and
+The Open Group Standard, the original IEEE and The Open Group Standard
+is the referee document. The original Standard can be obtained online at
+http://www.opengroup.org/unix/online.html .
+.PP
+Any typographical or formatting errors that appear
+in this page are most likely
+to have been introduced during the conversion of the source files to
+man page format. To report such errors, see
+https://www.kernel.org/doc/man-pages/reporting_bugs.html .