141 lines
2.4 KiB
Groff
141 lines
2.4 KiB
Groff
|
.TH taia 3
|
||
|
.SH NAME
|
||
|
taia \- manipulate times with 1-attosecond precision
|
||
|
.SH SYNTAX
|
||
|
.B #include <taia.h>
|
||
|
|
||
|
double \fBtaia_approx\fP(&\fIt\fR);
|
||
|
.br
|
||
|
double \fBtaia_frac\fP(&\fIt\fR);
|
||
|
.br
|
||
|
void \fBtaia_tai\fP(&\fIt\fR,&\fIsec\fR);
|
||
|
|
||
|
int \fBtaia_less\fP(&\fIa\fR,&\fIb\fR);
|
||
|
.br
|
||
|
void \fBtaia_add\fP(&\fIt\fR,&\fIa\fR,&\fIb\fR);
|
||
|
.br
|
||
|
void \fBtaia_sub\fP(&\fIt\fR,&\fIa\fR,&\fIb\fR);
|
||
|
.br
|
||
|
void \fBtaia_half\fP(&\fIt\fR,&\fIa\fR);
|
||
|
|
||
|
unsigned int \fBtaia_fmtfrac\fP(\fIs\fR,&\fIt\fR);
|
||
|
|
||
|
struct taia \fIt\fR;
|
||
|
.br
|
||
|
struct taia \fIa\fR;
|
||
|
.br
|
||
|
struct taia \fIb\fR;
|
||
|
.br
|
||
|
struct tai \fIsec\fR;
|
||
|
.br
|
||
|
char *\fIs\fR;
|
||
|
.SH DESCRIPTION
|
||
|
A
|
||
|
.B struct taia
|
||
|
stores an integer between 0 inclusive and 2^64x10^18 exclusive.
|
||
|
The format of
|
||
|
.B struct taia
|
||
|
is designed to speed up common operations;
|
||
|
applications should not look inside
|
||
|
.B struct taia\fR.
|
||
|
|
||
|
A
|
||
|
.B struct taia
|
||
|
variable is commonly used to store
|
||
|
a TAI64NA label.
|
||
|
Each TAI64NA label refers to one attosecond of real time;
|
||
|
see
|
||
|
.B http://pobox.com/~djb/proto/tai64.txt
|
||
|
for more information.
|
||
|
The integer in the
|
||
|
.B struct taia
|
||
|
is 10^18 times the second count,
|
||
|
plus 10^9 times the nanosecond count,
|
||
|
plus the attosecond count.
|
||
|
|
||
|
A
|
||
|
.B struct taia
|
||
|
variable may also be used to store
|
||
|
the numerical difference between two TAI64NA labels.
|
||
|
.SH ARITHMETIC
|
||
|
.B taia_approx
|
||
|
returns a double-precision approximation to
|
||
|
.IR t /10^18.
|
||
|
The result of
|
||
|
.B taia_approx
|
||
|
is always nonnegative.
|
||
|
|
||
|
.B taia_tai
|
||
|
places into
|
||
|
.I sec
|
||
|
the integer part of
|
||
|
.IR t /10^18.
|
||
|
|
||
|
.B taia_frac
|
||
|
returns a double-precision approximation to
|
||
|
the fraction part of
|
||
|
.IR t /10^18.
|
||
|
The result of
|
||
|
.B taia_frac
|
||
|
is always nonnegative.
|
||
|
|
||
|
.B taia_less
|
||
|
returns 1 if
|
||
|
.I a
|
||
|
is smaller than
|
||
|
.IR b ,
|
||
|
0 otherwise.
|
||
|
|
||
|
.B taia_add
|
||
|
adds
|
||
|
.I a
|
||
|
and
|
||
|
.I b
|
||
|
modulo 2^64x10^18
|
||
|
and puts the result into
|
||
|
.IR t .
|
||
|
The inputs and outputs may overlap.
|
||
|
|
||
|
.B taia_sub
|
||
|
subtracts
|
||
|
.I b
|
||
|
from
|
||
|
.I a
|
||
|
modulo 2^64x10^18
|
||
|
and puts the result into
|
||
|
.IR t .
|
||
|
The inputs and outputs may overlap.
|
||
|
|
||
|
.B taia_half
|
||
|
divides
|
||
|
.I a
|
||
|
by 2, rounding down,
|
||
|
and puts the result into
|
||
|
.IR t .
|
||
|
The input and output may overlap.
|
||
|
.SH "FORMATTING"
|
||
|
.B taia_fmtfrac
|
||
|
prints the remainder of
|
||
|
.IR t /10^18,
|
||
|
padded to exactly 18 digits,
|
||
|
into the character buffer
|
||
|
.IR s ,
|
||
|
without a terminating NUL.
|
||
|
It returns 18, the number of characters written.
|
||
|
.I s
|
||
|
may be zero;
|
||
|
then
|
||
|
.B taia_fmtfrac
|
||
|
returns 18 without printing anything.
|
||
|
|
||
|
The macro
|
||
|
.B TAIA_FMTFRAC
|
||
|
is defined as 19;
|
||
|
this is enough space for the output of
|
||
|
.B taia_fmtfrac
|
||
|
and a terminating NUL.
|
||
|
.SH "SEE ALSO"
|
||
|
taia_now(3),
|
||
|
taia_pack(3),
|
||
|
tai(3)
|