/*
* ps-lib.sli
*
* This file is part of NEST.
*
* Copyright (C) 2004 The NEST Initiative
*
* NEST is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* NEST is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with NEST. If not, see <http://www.gnu.org/licenses/>.
*
*/
/ps-lib ($Revision: 10098 $) provide
%% Library for PS conforming operators which are not
%% strictly needed by the startup process.
/* BeginDocumentation
Name: array - construct array with n zeros (PS)
Synopsis: int array -> array
Examples: 10 array ->[0 0 0 0 0 0 0 0 0 0]
Author: docu by Sirko Straube
*/
/array trie
[/integertype]
{
[] exch
{
0 append_a
} repeat_
} bind addtotrie def
% PostScript's operator putinterval
%
% call: array integer array putinterval array
% string integer string putinterval string
%
/* BeginDocumentation
Name: putinterval - replace sections of an array/string
Synopsis: string int string putinterval -> string
array int array putinterval -> array
Examples:(hello) 2 (xx) putinterval -> (hexxo)
[1 2 3 4 5] 2 [(xx) 99] putinterval -> [1 2 (xx) 99 5]
Author: docu by Sirko Straube
References: Postscript language
SeeAlso: getinterval
*/
/putinterval
{
size exch replace
} bind def
/* BeginDocumentation
Name: trunc - Truncate decimals of a double
Synopsis: double trunc -> int
Examples: 3.123456 trunc -> 3
Author: docu by Sirko Straube
SeeAlso: floor, ceil
*/
/trunc trie
[/doubletype] { int_d double_i } addtotrie
def
/* BeginDocumentation
Name: round - Round double to the nearest integer
Description: Alternatives: Function round_d (undocumented)
-> behaviour and synopsis are the same.
Remarks:
round_d is currently defined in SLI,
could be implemented in C++ for efficiency.
Author: introduced non-trie-variant round_d, Ruediger Kupper.
SeeAlso: iround, floor, ceil
*/
/round trie
[/doubletype] /round_d load addtotrie
def
/* BeginDocumentation
Name: iround - Round and convert double to the nearest integer
Synopsis: double round -> int
Description:
Round the argument to the nearest integer and converts it to type int.
Examples:
Remarks:
Author: introduced non-trie-variant round_d, Ruediger Kupper.
SeeAlso: iround, floor, ceil
*/
/iround_d {round_d int_d} bind def
/iround trie
[/doubletype] /iround_d load addtotrie
def
/* BeginDocumentation
Name: ceil - Return nearest integer larger than or equal to the argument.
Description: Alternatives: Function ceil_d (undocumented)
-> behaviour and synopsis are the same.
Parameters:
The input argument must be of type integer or double.
The output argument has the same type as the input argument.
Examples: 2.87 ceil -> 3
1.001 ceil -> 2
Remarks:
Note that for integer arguments, this function equals identity.
Author: Ruediger Kupper, docu edited by Sirko Straube
FirstVersion: 13.3.2003
SeeAlso: floor
*/
/ceil trie
[/doubletype] /ceil_d load addtotrie
[/integertype] {} addtotrie
def
/* BeginDocumentation
Name: floor - Return nearest integer smaller than or equal to the argument.
Description: Alternatives: Function floor_d (undocumented)
-> behaviour and synopsis are the same.
Parameters:
The input argument must be of type integer or double.
The output argument has the same type as the input argument.
Examples: 1.1 floor == -> 1
2.9 floor == -> 2
Remarks:
Note that for integer arguments, this function equals identity.
Author: Ruediger Kupper, docu edited by Sirko Straube
FirstVersion: 13.3.2003
SeeAlso: ceil
*/
/floor trie
[/doubletype] /floor_d load addtotrie
[/integertype] {} addtotrie
def