version 1.5, 2000/01/31 05:52:05 |
version 1.17, 2003/12/18 10:26:20 |
|
|
@comment $OpenXM: OpenXM/src/asir-doc/parts/builtin/misc.texi,v 1.4 1999/12/24 04:38:06 noro Exp $ |
@comment $OpenXM: OpenXM/src/asir-doc/parts/builtin/misc.texi,v 1.16 2003/11/27 03:43:37 ohara Exp $ |
\BJP |
\BJP |
@node $B$=$NB>(B,,, $BAH$_9~$_H!?t(B |
@node $B$=$NB>(B,,, $BAH$_9~$_H!?t(B |
@section $B$=$NB>(B |
@section $B$=$NB>(B |
|
|
* help:: |
* help:: |
* time:: |
* time:: |
* cputime tstart tstop:: |
* cputime tstart tstop:: |
|
* timer:: |
|
* currenttime:: |
|
* sleep:: |
* heap:: |
* heap:: |
* version:: |
* version:: |
* shell:: |
* shell:: |
Line 72 on $B$N;~$OI8=`F~NO$r7+$jJV$7$F=PNO$7(B, off $B$N;~ |
|
Line 75 on $B$N;~$OI8=`F~NO$r7+$jJV$7$F=PNO$7(B, off $B$N;~ |
|
@code{output} $B%3%^%s%I$rMQ$$$k:]$KM-8z$G$"$k(B. |
@code{output} $B%3%^%s%I$rMQ$$$k:]$KM-8z$G$"$k(B. |
@item bigfloat |
@item bigfloat |
on $B$N;~(B, $BF~NO$5$l$?IbF0>.?t$O(B @b{bigfloat} $B$KJQ49$5$l(B, $BIbF0>.?t1i;;$O(B |
on $B$N;~(B, $BF~NO$5$l$?IbF0>.?t$O(B @b{bigfloat} $B$KJQ49$5$l(B, $BIbF0>.?t1i;;$O(B |
@b{PARI} (@xref{pari}) $B$K$h$j9T$o$l$k(B. $B%G%U%)%k%H$NM-8z7e?t$O(B 9 $B7e$G$"$k(B. |
@b{PARI} (@ref{pari}) $B$K$h$j9T$o$l$k(B. $B%G%U%)%k%H$NM-8z7e?t$O(B 9 $B7e$G$"$k(B. |
$BM-8z7e?t$rA}$d$7$?$$;~$K$O(B @code{setprec()} $B$rMQ$$$k(B. |
$BM-8z7e?t$rA}$d$7$?$$;~$K$O(B @code{setprec()} $B$rMQ$$$k(B. |
off $B$N;~(B, $BF~NO$5$l$?IbF0>.?t$O(B, $BG\@:EYIbF0>.?t$KJQ49$5$l$k(B. |
off $B$N;~(B, $BF~NO$5$l$?IbF0>.?t$O(B, $BG\@:EYIbF0>.?t$KJQ49$5$l$k(B. |
@cindex PARI |
@cindex PARI |
Line 83 off $B$N;~(B, $BF~NO$5$l$?IbF0>.?t$O(B, $BG\@:EYI |
|
Line 86 off $B$N;~(B, $BF~NO$5$l$?IbF0>.?t$O(B, $BG\@:EYI |
|
@xref{$B%3%^%s%I%i%$%s%*%W%7%g%s(B}. |
@xref{$B%3%^%s%I%i%$%s%*%W%7%g%s(B}. |
@item verbose |
@item verbose |
on $B$N;~(B, $BH!?t$N:FDj5A;~$K%a%C%;!<%8$rI=<($9$k(B. |
on $B$N;~(B, $BH!?t$N:FDj5A;~$K%a%C%;!<%8$rI=<($9$k(B. |
|
@item quiet_mode |
|
1 $B$N$H$-(B, $B5/F0;~$KCx:n8"I=<($r9T$o$J$$(B. |
|
@xref{$B%3%^%s%I%i%$%s%*%W%7%g%s(B}. |
|
@item prompt |
|
0 $B$N$H$-%W%m%s%W%H$rI=<($7$J$$(B. 1 $B$N$H$-I8=`%W%m%s%W%H$rI=<((B. |
|
C $B%9%?%$%k$N%U%)%^%C%HJ8;zNs$r$b$A$$$k$H%f!<%6Dj5A$N%W%m%s%W%H(B. |
|
$BNc(B(asirgui $B$G$OIT2D(B): |
|
@code{ ctrl("prompt","\033[32m[%d]:= \033[0m")} |
@item hex |
@item hex |
1 $B$N$H$-(B, $B@0?t$O(B 0x $B$G;O$^$k(B 16 $B?J?t$H$7$FI=<($5$l$k(B. -1 $B$N$H$-(B, 16 $B?J?t$O(B, |
1 $B$N$H$-(B, $B@0?t$O(B 0x $B$G;O$^$k(B 16 $B?J?t$H$7$FI=<($5$l$k(B. -1 $B$N$H$-(B, 16 $B?J?t$O(B, |
$B4V$K(B @samp{|} $B$r$O$5$s$G(B 8 $B7e$4$H$K6h@Z$C$FI=<($5$l$k(B. |
$B4V$K(B @samp{|} $B$r$O$5$s$G(B 8 $B7e$4$H$K6h@Z$C$FI=<($5$l$k(B. |
|
@item real_digit |
|
$BG\@:EYIbF0>.?t$NI=<($N7e?t$r;XDj$9$k(B. |
|
@item double_output |
|
1 $B$N$H$-(B, $BG\@:EYIbF0>.?t$O$D$M$K(B ddd.ddd $B$N7A$GI=<($5$l$k(B. |
|
@item fortran_output |
|
1 $B$N$H$-(B, $BB?9`<0$NI=<($,(B FORTRAN $B%9%?%$%k$K$J$k(B. $B$9$J$o$AQQ$,(B |
|
@samp{^} $B$NBe$o$j$K(B @samp{**} $B$GI=$5$l$k(B. |
|
($B%G%U%)%k%HCM$O(B 0.) |
@item ox_batch |
@item ox_batch |
1 $B$N$H$-(B, $BAw?.%P%C%U%!$,$$$C$Q$$$K$J$C$?;~$N$_<+F0E*$K(B flush. |
1 $B$N$H$-(B, $BAw?.%P%C%U%!$,$$$C$Q$$$K$J$C$?;~$N$_<+F0E*$K(B flush. |
0 $B$N$H$-(B, $B%G!<%?(B, $B%3%^%s%IAw?.Kh$K(B flush. ($B%G%U%)%k%HCM$O(B 0.) |
0 $B$N$H$-(B, $B%G!<%?(B, $B%3%^%s%IAw?.Kh$K(B flush. ($B%G%U%)%k%HCM$O(B 0.) |
@xref{$BJ,;67W;;(B} |
@xref{$BJ,;67W;;(B}. |
@item ox_check |
@item ox_check |
1 $B$N$H$-(B, $BAw?.%G!<%?$rAj<j%W%m%;%9$,<u$1<h$l$k$+$I$&$+%A%'%C%/$9$k(B. |
1 $B$N$H$-(B, $BAw?.%G!<%?$rAj<j%W%m%;%9$,<u$1<h$l$k$+$I$&$+%A%'%C%/$9$k(B. |
0 $B$N$H$-$7$J$$(B. ($B%G%U%)%k%HCM$O(B 1.) |
0 $B$N$H$-$7$J$$(B. ($B%G%U%)%k%HCM$O(B 1.) |
@xref{$BJ,;67W;;(B} |
@xref{$BJ,;67W;;(B}. |
@item ox_exchange_mathcap |
@item ox_exchange_mathcap |
1 $B$N$H$-(B, OX server $B$H$N@\B33+;O;~$K(B, $B<+F0E*$K(B mathcap $B$N8r49$r9T$&(B. |
1 $B$N$H$-(B, OX server $B$H$N@\B33+;O;~$K(B, $B<+F0E*$K(B mathcap $B$N8r49$r9T$&(B. |
($B%G%U%)%k%HCM$O(B 1.) |
($B%G%U%)%k%HCM$O(B 1.) |
@xref{$BJ,;67W;;(B} |
@xref{$BJ,;67W;;(B}. |
@end table |
@end table |
\E |
\E |
\BEG |
\BEG |
Line 145 and as a result, the frequency of garbage collection d |
|
Line 164 and as a result, the frequency of garbage collection d |
|
@xref{Command line options}. |
@xref{Command line options}. |
@item verbose |
@item verbose |
If `on' a warning messages is displayed when a function is redefined. |
If `on' a warning messages is displayed when a function is redefined. |
|
@item quiet_mode |
|
If 1 is set, the copyright notice has been displayed at boot time. |
|
@item prompt |
|
If the value is 0, then prompt is not output. |
|
If the value is 1, then the standard prompt is output. |
|
Asir prompt can be customized by giving a C-style format string. |
|
Example (for unix asir); |
|
@code{ ctrl("prompt","\033[32m[%d]:= \033[0m")} |
|
|
@item hex |
@item hex |
If 1 is set, integers are displayed as hexadecimal numbers with prefix |
If 1 is set, integers are displayed as hexadecimal numbers with prefix |
@code{0x}. if -1 is set, hexadecimal numbers are desplayed with |
@code{0x}. if -1 is set, hexadecimal numbers are displayed with |
@samp{|} inserted at every 8 hexadecimal digits. |
@samp{|} inserted at every 8 hexadecimal digits. |
|
@item real_digit |
|
Sets the number of digits used to print a floating double. |
|
@item double_output |
|
If set to 1, any floating double is printed in the style ddd.ddd. |
|
@item fortran_output |
|
If `on' polynomials are displayed in FORTRAN style. That is, a power |
|
is represented by @samp{**} instead of @samp{^}. |
|
The default value is 'off. |
@item ox_batch |
@item ox_batch |
If 'on', the OpenXM send buffer is flushed only when the buffer is full. |
If 'on', the OpenXM send buffer is flushed only when the buffer is full. |
If 'off', the buffer is always flushed at each sending of data or command. |
If 'off', the buffer is always flushed at each sending of data or command. |
The default value is 'off'. |
The default value is 'off'. |
@xref{Distributed computation} |
@xref{Distributed computation}. |
@item ox_check |
@item ox_check |
If 'on' the check by mathcap is done before sending data. |
If 'on' the check by mathcap is done before sending data. |
The default value is 'on'. |
The default value is 'on'. |
@xref{Distributed computation} |
@xref{Distributed computation}. |
@item ox_exchange_mathcap |
@item ox_exchange_mathcap |
If 'on' Asir forces the exchange of mathcaps at the communication startup. |
If 'on' Asir forces the exchange of mathcaps at the communication startup. |
The default value is 'on'. |
The default value is 'on'. |
@xref{Distributed computation} |
@xref{Distributed computation}. |
@end table |
@end table |
\E |
\E |
@end itemize |
@end itemize |
Line 170 The default value is 'on'. |
|
Line 206 The default value is 'on'. |
|
\JP @item $B;2>H(B |
\JP @item $B;2>H(B |
\EG @item References |
\EG @item References |
@fref{cputime tstart tstop}, @fref{output}, |
@fref{cputime tstart tstop}, @fref{output}, |
@fref{pari}, @fref{setprec}, @fref{eval}. |
@fref{pari}, @fref{setprec}, @fref{eval deval}. |
@end table |
@end table |
|
|
\JP @node debug,,, $B$=$NB>(B |
\JP @node debug,,, $B$=$NB>(B |
Line 203 the debugger is ready for commands. |
|
Line 239 the debugger is ready for commands. |
|
Typing in @code{quit} (Note! without a semicolon.) brings you |
Typing in @code{quit} (Note! without a semicolon.) brings you |
to exit the debug-mode. |
to exit the debug-mode. |
@item |
@item |
@xref{Debugger} for details. |
See @ref{Debugger} for details. |
\E |
\E |
@end itemize |
@end itemize |
|
|
Line 454 for a reply to interruption prompting are added to the |
|
Line 490 for a reply to interruption prompting are added to the |
|
@table @t |
@table @t |
\JP @item $B;2>H(B |
\JP @item $B;2>H(B |
\EG @item References |
\EG @item References |
@fref{cputime tstart tstop}. |
@fref{cputime tstart tstop}, @fref{currenttime}. |
@end table |
@end table |
|
|
\JP @node cputime tstart tstop,,, $B$=$NB>(B |
\JP @node cputime tstart tstop,,, $B$=$NB>(B |
Line 551 the debug-mode and execute @code{cputime(1)}. |
|
Line 587 the debug-mode and execute @code{cputime(1)}. |
|
@table @t |
@table @t |
\JP @item $B;2>H(B |
\JP @item $B;2>H(B |
\EG @item References |
\EG @item References |
@fref{time}, @fref{ctrl}. |
@fref{time}, @fref{currenttime}, @fref{ctrl}. |
@end table |
@end table |
|
|
|
\JP @node timer,,, $B$=$NB>(B |
|
\EG @node timer,,, Miscellaneouses |
|
@subsection @code{timer} |
|
@findex timer |
|
|
|
@table @t |
|
@item timer(@var{interval},@var{expr},@var{val}) |
|
\JP :: $B@)8B;~4V$D$-$G7W;;$r<B9T$9$k(B. |
|
\EG :: Compute an expression under the interval timer. |
|
@end table |
|
|
|
@table @var |
|
@item return |
|
\JP $B7k2L(B |
|
\EG result |
|
|
|
@item interval |
|
\JP $B@)8B;~4V(B ($BIC(B) |
|
\EG interval (second) |
|
|
|
@item expr |
|
\JP $B7W;;$9$k<0(B |
|
\EG expression to be computed |
|
|
|
@item val |
|
\JP $B%?%$%^$K$h$kCfCG;~$NLa$jCM(B |
|
\EG a value to be returned when the timer is expired |
|
@end table |
|
|
|
@itemize @bullet |
|
|
|
\BJP |
|
@item |
|
@code{timer()} $B$O(B, $B;~4V$r;XDj$7$F7W;;$r<B9T$9$k(B. $B;XDj;~4VFb$K7W;;$,40N;(B |
|
$B$7$?>l9g$=$NCM$rJV$9(B. $B;XDj;~4VFb$K7W;;$,40N;$7$J$+$C$?>l9g(B, $BBh(B 3 $B0z?t(B |
|
$B$rJV$9(B. |
|
|
|
@item |
|
$BBh(B 3 $B0z?t$NCM$O(B, $B7W;;$,40N;$7$?>l9g$NCM$H6hJL$G$-$kI,MW$,$"$k(B. |
|
\E |
|
|
|
\BEG |
|
@item |
|
@code{timer()} computes an expression under the interval timer. |
|
If the computation finishes within the specified interval, it |
|
returns the result of the computation. Otherwise it returns the third |
|
argument. |
|
|
|
@item |
|
The third argument should be distinguishable from the result on success. |
|
\E |
|
|
|
@end itemize |
|
|
|
@example |
|
[0] load("cyclic"); |
|
1 |
|
[10] timer(10,dp_gr_main(cyclic(7),[c0,c1,c2,c3,c4,c5,c6],1,1,0),0); |
|
interval timer expired (VTALRM) |
|
0 |
|
[11] |
|
@end example |
|
|
|
\JP @node currenttime,,, $B$=$NB>(B |
|
\EG @node currenttime,,, Miscellaneouses |
|
@subsection @code{currenttime} |
|
@findex currenttime |
|
|
|
@table @t |
|
@item currenttime() |
|
\JP :: $B8=:_;~9o$r<hF@(B |
|
\EG :: Get current time. |
|
@end table |
|
|
|
@table @var |
|
@item return |
|
\JP 1970$BG/(B1$B7n(B1$BF|(B0$B;~(B0$BJ,(B0$BIC$+$i$N7P2aIC?t(B. |
|
\EG UNIX time. |
|
@end table |
|
|
|
@itemize @bullet |
|
|
|
@item |
|
\JP @code{currenttime()} $B$O8=:_;~9o$rJV$9(B. UNIX $B$N>l9g(B, time(3) $B$r8F$s$G$$$k$@$1$G$"$k(B. |
|
\EG See also time(3) in UNIX manuals. |
|
|
|
@end itemize |
|
|
|
@example |
|
[0] currenttime(); |
|
1071639228 |
|
[1] |
|
@end example |
|
|
|
\JP @node sleep,,, $B$=$NB>(B |
|
\EG @node sleep,,, Miscellaneouses |
|
@subsection @code{sleep} |
|
@findex sleep |
|
|
|
@table @t |
|
@item sleep(@var{interval}) |
|
\JP :: $B%W%m%;%9$N<B9T$rDd;_(B |
|
\EG :: Suspend computation for an interval. |
|
@end table |
|
|
|
@table @var |
|
@item return |
|
1 |
|
|
|
@item interval |
|
\JP $BDd;_;~4V(B ($B%^%$%/%mIC(B) |
|
\EG interval (micro second) |
|
@end table |
|
|
|
@itemize @bullet |
|
|
|
@item |
|
\JP @code{sleep()} $B$O(B, $B%W%m%;%9$N<B9T$rDd;_$9$k(B. UNIX $B$N>l9g(B, usleep $B$r8F$s$G$$$k$@$1$G$"$k(B. |
|
\EG See also usleep(3) in UNIX manuals. |
|
|
|
@end itemize |
|
|
|
@example |
|
[0] sleep(1000); |
|
1 |
|
[1] |
|
@end example |
|
|
\JP @node heap,,, $B$=$NB>(B |
\JP @node heap,,, $B$=$NB>(B |
\EG @node heap,,, Miscellaneouses |
\EG @node heap,,, Miscellaneouses |
@subsection @code{heap} |
@subsection @code{heap} |
Line 662 at the activation of @b{Asir}. (@xref{Command line opt |
|
Line 826 at the activation of @b{Asir}. (@xref{Command line opt |
|
@b{Asir} $B$N%P!<%8%g%s$r<+A3?t$GJV$9(B. |
@b{Asir} $B$N%P!<%8%g%s$r<+A3?t$GJV$9(B. |
\E |
\E |
\BEG |
\BEG |
Command @code{version()} returns the version identification number |
@item |
, an integer of @b{Asir} in use. |
Command @code{version()} returns the version identification number, |
|
an integer of @b{Asir} in use. |
\E |
\E |
@end itemize |
@end itemize |
|
|
Line 707 as its return value. |
|
Line 872 as its return value. |
|
|
|
@example |
@example |
[0] shell("ls"); |
[0] shell("ls"); |
alg da katsura ralg suit |
alg da katsura ralg suit |
algt defs.h kimura ratint test |
algt defs.h kimura ratint test |
alpi edet kimura3 robot texput.log |
alpi edet kimura3 robot texput.log |
asir.o fee mfee sasa wang |
asir.o fee mfee sasa wang |
asir_symtab gr mksym shira wang_data |
asir_symtab gr mksym shira wang_data |
base gr.h mp snf1 wt |
base gr.h mp snf1 wt |
bgk help msubst solve |
bgk help msubst solve |
chou hom p sp |
chou hom p sp |
const ifplot proot strum |
const ifplot proot strum |
cyclic is r sugar |
cyclic is r sugar |
0 |
0 |
[1] |
[1] |
@end example |
@end example |
Line 742 cyclic is r sugar |
|
Line 907 cyclic is r sugar |
|
@item arg0 |
@item arg0 |
\JP $B%j%9%H(B, $B%Y%/%H%k(B, $B9TNs(B |
\JP $B%j%9%H(B, $B%Y%/%H%k(B, $B9TNs(B |
\EG list, vector or matrix |
\EG list, vector or matrix |
@item arg1, ... |
@item arg1 ... |
\JP $BG$0U(B ($B;D$j$N0z?t(B) |
\JP $BG$0U(B ($B;D$j$N0z?t(B) |
\EG arbitrary (the rest of arguments) |
\EG arbitrary (the rest of arguments) |
@end table |
@end table |
Line 761 cyclic is r sugar |
|
Line 926 cyclic is r sugar |
|
@var{arg0} $B$,%j%9%H(B, $B%Y%/%H%k(B, $B9TNs0J30$N>l9g(B, $BC1$K(B @var{arg0}, |
@var{arg0} $B$,%j%9%H(B, $B%Y%/%H%k(B, $B9TNs0J30$N>l9g(B, $BC1$K(B @var{arg0}, |
@var{arg1}, ... $B$r0z?t$H$7$F(B @var{function} $B$r8F$S=P$7$=$N(B |
@var{arg1}, ... $B$r0z?t$H$7$F(B @var{function} $B$r8F$S=P$7$=$N(B |
$B7k2L$rJV$9(B. |
$B7k2L$rJV$9(B. |
|
@item |
|
@code{map} $B$N0z?t(B @var{function} $B$GM?$($i$l$kH!?t$O(B, $BFbItE*$K$bH!?t$H(B |
|
$B$7$F<BAu$5$l$F$$$J$1$l$P$J$i$J$$(B. $B$=$&$G$J$1$l$P(B parse error $B$K$J$k(B. |
|
$BNc$($P(B @code{map} $B<+?H$d(B @code{car}, @code{cdr} $B$J$I$OFbItE*$K$OH!?t$H(B |
|
$B$7$F<BAu$5$l$F$$$J$$(B. $B$7$?$,$C$F(B @code{map} $B$N0z?t$K(B @code{map} $B$r$H(B |
|
$B$k$3$H$O$G$-$J$$(B. |
\E |
\E |
\BEG |
\BEG |
@item |
@item |
Line 933 of the install directory. |
|
Line 1104 of the install directory. |
|
@findex getopt |
@findex getopt |
|
|
@table @t |
@table @t |
@item getopt(@var{key}) |
@item getopt([@var{key}]) |
\JP :: $B%*%W%7%g%s$NCM$rJV$9(B. |
\JP :: $B%*%W%7%g%s$NCM$rJV$9(B. |
\EG :: Returns the value of an option. |
\EG :: Returns the value of an option. |
@end table |
@end table |
Line 952 of the install directory. |
|
Line 1123 of the install directory. |
|
$B$,$"$k(B (@pxref{$B%*%W%7%g%s;XDj(B}). $B;XDj$5$l$?%*%W%7%g%s$r4X?tFb$G(B |
$B$,$"$k(B (@pxref{$B%*%W%7%g%s;XDj(B}). $B;XDj$5$l$?%*%W%7%g%s$r4X?tFb$G(B |
$B<u$1<h$k$?$a$K$3$N4X?t$rMQ$$$k(B. |
$B<u$1<h$k$?$a$K$3$N4X?t$rMQ$$$k(B. |
@item |
@item |
|
$BL50z?t$G8F$S=P$5$l$?>l9g(B, @code{getopt()} $B$O(B |
|
@code{[[key1,value1],[key2,value2],...]} $B$J$k%j%9%H$rJV$9(B. |
|
$B$3$3$G(B, @code{key} $B$O4X?t8F$S=P$7;~$K;XDj$5$l$?%*%W%7%g%s(B, @code{value} |
|
$B$O$=$NCM$G$"$k(B. |
|
@item |
$B4X?t8F$S=P$7$N:]$K(B @var{key} $B$,%*%W%7%g%s$H$7$F;XDj$5$l$F$$$k(B |
$B4X?t8F$S=P$7$N:]$K(B @var{key} $B$,%*%W%7%g%s$H$7$F;XDj$5$l$F$$$k(B |
$B>l9g$K$O(B, $B$=$NCM$rJV$9(B. $B$b$7;XDj$,$J$$>l9g$K$O(B, VOID $B7?%*%V%8%'%/%H(B |
$B>l9g$K$O(B, $B$=$NCM$rJV$9(B. $B$b$7;XDj$,$J$$>l9g$K$O(B, VOID $B7?%*%V%8%'%/%H(B |
($B7?<1JL;R(B -1) $B$rJV$9(B. @code{getopt()} $B$,JV$7$?CM$N7?$r(B @code{type()} |
($B7?<1JL;R(B -1) $B$rJV$9(B. @code{getopt()} $B$,JV$7$?CM$N7?$r(B @code{type()} |
Line 973 must be equal to that in the declaration of the functi |
|
Line 1149 must be equal to that in the declaration of the functi |
|
A function with indefinite number of arguments can be realized |
A function with indefinite number of arguments can be realized |
by using @var{options} (@pxref{option}). |
by using @var{options} (@pxref{option}). |
The value of a specified option is retrieved by @code{getopt}. |
The value of a specified option is retrieved by @code{getopt}. |
|
@item |
|
If @code{getopt()} is called with no argument, then it returns a list |
|
@code{[[key1,value1],} @code{[key2,value2],@dots{}]}. |
|
In the list, each @code{key} |
|
is an option which was specified when the function executing @code{getopt} |
|
was invoked, and @code{value} is the value of the option. |
@item |
@item |
If an option @var{key} is specified upon a function call, @code{getopt} |
If an option @var{key} is specified upon a function call, @code{getopt} |
return the value of the option. If such an option is not specified, |
return the value of the option. If such an option is not specified, |