Skip to content

Commit ee4127d

Browse files
committed
Add Typescript definitions
1 parent ebdbd18 commit ee4127d

File tree

9 files changed

+1366
-0
lines changed

9 files changed

+1366
-0
lines changed
Lines changed: 234 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,234 @@
1+
/*
2+
* @license Apache-2.0
3+
*
4+
* Copyright (c) 2019 The Stdlib Authors.
5+
*
6+
* Licensed under the Apache License, Version 2.0 (the "License");
7+
* you may not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing, software
13+
* distributed under the License is distributed on an "AS IS" BASIS,
14+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
* See the License for the specific language governing permissions and
16+
* limitations under the License.
17+
*/
18+
19+
// TypeScript Version: 2.0
20+
21+
/// <reference types="@stdlib/types"/>
22+
23+
import * as random from '@stdlib/types/random';
24+
25+
/**
26+
* Interface defining `factory` options.
27+
*/
28+
interface Options {
29+
/**
30+
* Pseudorandom number generator which generates uniformly distributed pseudorandom numbers.
31+
*/
32+
prng?: random.PRNG;
33+
34+
/**
35+
* Pseudorandom number generator seed.
36+
*/
37+
seed?: random.PRNGSeedMT19937;
38+
39+
/**
40+
* Pseudorandom number generator state.
41+
*/
42+
state?: random.PRNGStateMT19937;
43+
44+
/**
45+
* Specifies whether to copy a provided pseudorandom number generator state.
46+
*/
47+
copy?: boolean;
48+
}
49+
50+
/**
51+
* Interface for PRNG properties and methods.
52+
*/
53+
interface PRNG {
54+
/**
55+
* Generator name.
56+
*/
57+
readonly NAME: string;
58+
59+
/**
60+
* Underlying pseudorandom number generator.
61+
*/
62+
readonly PRNG: random.PRNG;
63+
64+
/**
65+
* PRNG seed.
66+
*/
67+
readonly seed: random.PRNGSeedMT19937;
68+
69+
/**
70+
* PRNG seed length.
71+
*/
72+
readonly seedLength: number;
73+
74+
/**
75+
* PRNG state.
76+
*/
77+
state: random.PRNGStateMT19937;
78+
79+
/**
80+
* PRNG state length.
81+
*/
82+
readonly stateLength: number;
83+
84+
/**
85+
* PRNG state size (in bytes).
86+
*/
87+
readonly byteLength: number;
88+
89+
/**
90+
* Serializes the pseudorandom number generator as a JSON object.
91+
*
92+
* @returns JSON representation
93+
*/
94+
toJSON(): string;
95+
}
96+
97+
/**
98+
* Interface for generating pseudorandom numbers from a Cauchy distribution with pre-specified parameter values.
99+
*/
100+
interface NullaryFunction extends PRNG {
101+
/**
102+
* Returns a pseudorandom number drawn from a Cauchy distribution.
103+
*
104+
* @returns pseudorandom number
105+
*/
106+
(): number;
107+
}
108+
109+
/**
110+
* Interface for generating pseudorandom numbers from a Cauchy distribution without pre-specified parameter values.
111+
*/
112+
interface BinaryFunction extends PRNG {
113+
/**
114+
* Returns a pseudorandom number drawn from a Cauchy distribution.
115+
*
116+
* @param x0 - location parameter
117+
* @param gamma - scale parameter
118+
* @returns pseudorandom number
119+
*/
120+
( x0: number, gamma: number ): number;
121+
}
122+
123+
/**
124+
* Interface for generating pseudorandom numbers drawn from a Cauchy distribution.
125+
*/
126+
interface Random extends PRNG {
127+
/**
128+
* Returns pseudorandom number drawn from a Cauchy distribution.
129+
*
130+
* ## Notes
131+
*
132+
* - If `x0` or `gamma` is `NaN` or `gamma <= 0`, the function returns `NaN`.
133+
*
134+
* @param x0 - location parameter
135+
* @param gamma - scale parameter
136+
* @returns pseudorandom number
137+
*
138+
* @example
139+
* var v = cauchy( 0.0, 2.0 );
140+
* // returns <number>
141+
*
142+
* @example
143+
* var v = cauchy( 0.0, -1.0 );
144+
* // returns NaN
145+
*/
146+
( x0: number, gamma: number ): number;
147+
148+
/**
149+
* Returns a pseudorandom number generator for generating random numbers from a Cauchy distribution.
150+
*
151+
* ## Notes
152+
*
153+
* - When provided `x0` and `gamma`, the returned PRNG returns random variates drawn from the specified distribution.
154+
*
155+
* @param x0 - location parameter
156+
* @param gamma - scale parameter
157+
* @param options - function options
158+
* @param options.prng - pseudorandom number generator which generates uniformly distributed pseudorandom numbers
159+
* @param options.seed - pseudorandom number generator seed
160+
* @param options.state - pseudorandom number generator state
161+
* @param options.copy - boolean indicating whether to copy a provided pseudorandom number generator state (default: true)
162+
* @throws `gamma` must be a positive number
163+
* @throws must provide a valid state
164+
* @returns pseudorandom number generator
165+
*
166+
* @example
167+
* var mycauchy = cauchy.factory( 0.0, 1.0 );
168+
* var v = mycauchy();
169+
* // returns <number>
170+
*
171+
* @example
172+
* var mycauchy = cauchy.factory( -3.0, 0.5, {
173+
* 'seed': 297
174+
* });
175+
* var v = mycauchy();
176+
* // returns <number>
177+
*/
178+
factory( x0: number, gamma: number, options?: Options ): NullaryFunction;
179+
180+
/**
181+
* Returns a pseudorandom number generator for generating random numbers from a Cauchy distribution.
182+
*
183+
* ## Notes
184+
*
185+
* - When not provided `x0` and `gamma`, the returned PRNG requires that both `x0` and `gamma` be provided at each invocation.
186+
*
187+
* @param options - function options
188+
* @param options.prng - pseudorandom number generator which generates uniformly distributed pseudorandom numbers
189+
* @param options.seed - pseudorandom number generator seed
190+
* @param options.state - pseudorandom number generator state
191+
* @param options.copy - boolean indicating whether to copy a provided pseudorandom number generator state (default: true)
192+
* @throws must provide a valid state
193+
* @returns pseudorandom number generator
194+
*
195+
* @example
196+
* var mycauchy = cauchy.factory();
197+
* var v = mycauchy( 0.0, 1.0 );
198+
* // returns <number>
199+
*
200+
* @example
201+
* var mycauchy = cauchy.factory({
202+
* 'seed': 297
203+
* });
204+
* var v = mycauchy( -3.0, 0.5 );
205+
* // returns <number>
206+
*/
207+
factory( options?: Options ): BinaryFunction;
208+
}
209+
210+
/**
211+
* Returns pseudorandom number drawn from a Cauchy distribution.
212+
*
213+
* ## Notes
214+
*
215+
* - If `x0` or `gamma` is `NaN` or `gamma <= 0`, the function returns `NaN`.
216+
*
217+
* @param x0 - location parameter
218+
* @param gamma - scale parameter
219+
* @returns pseudorandom number
220+
*
221+
* @example
222+
* var v = cauchy( 0.0, 2.0 );
223+
* // returns <number>
224+
*
225+
* @example
226+
* var v = cauchy( 0.0, -1.0 );
227+
* // returns NaN
228+
*/
229+
declare var Cauchy: Random;
230+
231+
232+
// EXPORTS //
233+
234+
export = Cauchy;

0 commit comments

Comments
 (0)