From Jason Turner

[numerics.c]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpug5uvw74/{from.md → to.md} +411 -0
tmp/tmpug5uvw74/{from.md → to.md} RENAMED
@@ -0,0 +1,411 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## C compatibility <a id="numerics.c">[[numerics.c]]</a>
2
+
3
+ ### Header `<stdckdint.h>` synopsis <a id="stdckdint.h.syn">[[stdckdint.h.syn]]</a>
4
+
5
+ ``` cpp
6
+ #define __STDC_VERSION_STDCKDINT_H__ 202311L
7
+
8
+ template<class type1, class type2, class type3>
9
+ bool ckd_add(type1* result, type2 a, type3 b);
10
+ template<class type1, class type2, class type3>
11
+ bool ckd_sub(type1* result, type2 a, type3 b);
12
+ template<class type1, class type2, class type3>
13
+ bool ckd_mul(type1* result, type2 a, type3 b);
14
+ ```
15
+
16
+ See also: ISO C 7.20
17
+
18
+ ### Checked integer operations <a id="numerics.c.ckdint">[[numerics.c.ckdint]]</a>
19
+
20
+ ``` cpp
21
+ template<class type1, class type2, class type3>
22
+ bool ckd_add(type1* result, type2 a, type3 b);
23
+ template<class type1, class type2, class type3>
24
+ bool ckd_sub(type1* result, type2 a, type3 b);
25
+ template<class type1, class type2, class type3>
26
+ bool ckd_mul(type1* result, type2 a, type3 b);
27
+ ```
28
+
29
+ *Mandates:* Each of the types `type1`, `type2`, and `type3` is a
30
+ cv-unqualified signed or unsigned integer type [[basic.fundamental]].
31
+
32
+ *Remarks:* Each function template has the same semantics as the
33
+ corresponding type-generic macro with the same name specified in See
34
+ also: ISO C 7.20.
35
+
36
+ <!-- Link reference definitions -->
37
+ [algorithms.parallel.defns]: algorithms.md#algorithms.parallel.defns
38
+ [bad.alloc]: support.md#bad.alloc
39
+ [basic.extended.fp]: basic.md#basic.extended.fp
40
+ [basic.fundamental]: basic.md#basic.fundamental
41
+ [basic.lookup.argdep]: basic.md#basic.lookup.argdep
42
+ [basic.stc.thread]: basic.md#basic.stc.thread
43
+ [basic.types.general]: basic.md#basic.types.general
44
+ [c.math]: #c.math
45
+ [c.math.abs]: #c.math.abs
46
+ [c.math.fpclass]: #c.math.fpclass
47
+ [c.math.hypot3]: #c.math.hypot3
48
+ [c.math.lerp]: #c.math.lerp
49
+ [c.math.rand]: #c.math.rand
50
+ [cfenv]: #cfenv
51
+ [cfenv.syn]: #cfenv.syn
52
+ [cfenv.thread]: #cfenv.thread
53
+ [class.gslice]: #class.gslice
54
+ [class.gslice.overview]: #class.gslice.overview
55
+ [class.slice]: #class.slice
56
+ [class.slice.overview]: #class.slice.overview
57
+ [cmath.syn]: #cmath.syn
58
+ [cmplx.over]: #cmplx.over
59
+ [complex]: #complex
60
+ [complex.literals]: #complex.literals
61
+ [complex.member.ops]: #complex.member.ops
62
+ [complex.members]: #complex.members
63
+ [complex.numbers]: #complex.numbers
64
+ [complex.numbers.general]: #complex.numbers.general
65
+ [complex.ops]: #complex.ops
66
+ [complex.syn]: #complex.syn
67
+ [complex.transcendentals]: #complex.transcendentals
68
+ [complex.tuple]: #complex.tuple
69
+ [complex.value.ops]: #complex.value.ops
70
+ [cons.slice]: #cons.slice
71
+ [contents]: library.md#contents
72
+ [conv.prom]: expr.md#conv.prom
73
+ [conv.rank]: basic.md#conv.rank
74
+ [cpp.pragma]: cpp.md#cpp.pragma
75
+ [cpp17.copyassignable]: #cpp17.copyassignable
76
+ [cpp17.copyconstructible]: #cpp17.copyconstructible
77
+ [cpp17.equalitycomparable]: #cpp17.equalitycomparable
78
+ [dcl.init]: dcl.md#dcl.init
79
+ [dcl.init.general]: dcl.md#dcl.init.general
80
+ [errno]: diagnostics.md#errno
81
+ [execpol.type]: algorithms.md#execpol.type
82
+ [expr.const]: expr.md#expr.const
83
+ [gslice.access]: #gslice.access
84
+ [gslice.array.assign]: #gslice.array.assign
85
+ [gslice.array.comp.assign]: #gslice.array.comp.assign
86
+ [gslice.array.fill]: #gslice.array.fill
87
+ [gslice.cons]: #gslice.cons
88
+ [implimits]: limits.md#implimits
89
+ [indirect.array.assign]: #indirect.array.assign
90
+ [indirect.array.comp.assign]: #indirect.array.comp.assign
91
+ [indirect.array.fill]: #indirect.array.fill
92
+ [input.iterators]: iterators.md#input.iterators
93
+ [input.output]: input.md#input.output
94
+ [iostate.flags]: input.md#iostate.flags
95
+ [istream.formatted]: input.md#istream.formatted
96
+ [iterator.concept.contiguous]: iterators.md#iterator.concept.contiguous
97
+ [iterator.requirements.general]: iterators.md#iterator.requirements.general
98
+ [library.c]: library.md#library.c
99
+ [linalg]: #linalg
100
+ [linalg.algs.blas1]: #linalg.algs.blas1
101
+ [linalg.algs.blas1.add]: #linalg.algs.blas1.add
102
+ [linalg.algs.blas1.asum]: #linalg.algs.blas1.asum
103
+ [linalg.algs.blas1.complexity]: #linalg.algs.blas1.complexity
104
+ [linalg.algs.blas1.copy]: #linalg.algs.blas1.copy
105
+ [linalg.algs.blas1.dot]: #linalg.algs.blas1.dot
106
+ [linalg.algs.blas1.givens]: #linalg.algs.blas1.givens
107
+ [linalg.algs.blas1.givens.lartg]: #linalg.algs.blas1.givens.lartg
108
+ [linalg.algs.blas1.givens.rot]: #linalg.algs.blas1.givens.rot
109
+ [linalg.algs.blas1.iamax]: #linalg.algs.blas1.iamax
110
+ [linalg.algs.blas1.matfrobnorm]: #linalg.algs.blas1.matfrobnorm
111
+ [linalg.algs.blas1.matinfnorm]: #linalg.algs.blas1.matinfnorm
112
+ [linalg.algs.blas1.matonenorm]: #linalg.algs.blas1.matonenorm
113
+ [linalg.algs.blas1.nrm2]: #linalg.algs.blas1.nrm2
114
+ [linalg.algs.blas1.scal]: #linalg.algs.blas1.scal
115
+ [linalg.algs.blas1.ssq]: #linalg.algs.blas1.ssq
116
+ [linalg.algs.blas1.swap]: #linalg.algs.blas1.swap
117
+ [linalg.algs.blas2]: #linalg.algs.blas2
118
+ [linalg.algs.blas2.gemv]: #linalg.algs.blas2.gemv
119
+ [linalg.algs.blas2.hemv]: #linalg.algs.blas2.hemv
120
+ [linalg.algs.blas2.rank1]: #linalg.algs.blas2.rank1
121
+ [linalg.algs.blas2.rank2]: #linalg.algs.blas2.rank2
122
+ [linalg.algs.blas2.symherrank1]: #linalg.algs.blas2.symherrank1
123
+ [linalg.algs.blas2.symv]: #linalg.algs.blas2.symv
124
+ [linalg.algs.blas2.trmv]: #linalg.algs.blas2.trmv
125
+ [linalg.algs.blas2.trsv]: #linalg.algs.blas2.trsv
126
+ [linalg.algs.blas3]: #linalg.algs.blas3
127
+ [linalg.algs.blas3.gemm]: #linalg.algs.blas3.gemm
128
+ [linalg.algs.blas3.inplacetrsm]: #linalg.algs.blas3.inplacetrsm
129
+ [linalg.algs.blas3.rank2k]: #linalg.algs.blas3.rank2k
130
+ [linalg.algs.blas3.rankk]: #linalg.algs.blas3.rankk
131
+ [linalg.algs.blas3.trmm]: #linalg.algs.blas3.trmm
132
+ [linalg.algs.blas3.trsm]: #linalg.algs.blas3.trsm
133
+ [linalg.algs.blas3.xxmm]: #linalg.algs.blas3.xxmm
134
+ [linalg.algs.reqs]: #linalg.algs.reqs
135
+ [linalg.conj]: #linalg.conj
136
+ [linalg.conj.conjugated]: #linalg.conj.conjugated
137
+ [linalg.conj.conjugatedaccessor]: #linalg.conj.conjugatedaccessor
138
+ [linalg.conj.intro]: #linalg.conj.intro
139
+ [linalg.conjtransposed]: #linalg.conjtransposed
140
+ [linalg.general]: #linalg.general
141
+ [linalg.helpers]: #linalg.helpers
142
+ [linalg.helpers.abs]: #linalg.helpers.abs
143
+ [linalg.helpers.concepts]: #linalg.helpers.concepts
144
+ [linalg.helpers.conj]: #linalg.helpers.conj
145
+ [linalg.helpers.imag]: #linalg.helpers.imag
146
+ [linalg.helpers.mandates]: #linalg.helpers.mandates
147
+ [linalg.helpers.precond]: #linalg.helpers.precond
148
+ [linalg.helpers.real]: #linalg.helpers.real
149
+ [linalg.layout.packed]: #linalg.layout.packed
150
+ [linalg.layout.packed.cons]: #linalg.layout.packed.cons
151
+ [linalg.layout.packed.obs]: #linalg.layout.packed.obs
152
+ [linalg.layout.packed.overview]: #linalg.layout.packed.overview
153
+ [linalg.overview]: #linalg.overview
154
+ [linalg.reqs]: #linalg.reqs
155
+ [linalg.reqs.alg]: #linalg.reqs.alg
156
+ [linalg.reqs.val]: #linalg.reqs.val
157
+ [linalg.scaled]: #linalg.scaled
158
+ [linalg.scaled.intro]: #linalg.scaled.intro
159
+ [linalg.scaled.scaled]: #linalg.scaled.scaled
160
+ [linalg.scaled.scaledaccessor]: #linalg.scaled.scaledaccessor
161
+ [linalg.syn]: #linalg.syn
162
+ [linalg.tags]: #linalg.tags
163
+ [linalg.tags.diagonal]: #linalg.tags.diagonal
164
+ [linalg.tags.order]: #linalg.tags.order
165
+ [linalg.tags.triangle]: #linalg.tags.triangle
166
+ [linalg.transp]: #linalg.transp
167
+ [linalg.transp.helpers]: #linalg.transp.helpers
168
+ [linalg.transp.intro]: #linalg.transp.intro
169
+ [linalg.transp.layout.transpose]: #linalg.transp.layout.transpose
170
+ [linalg.transp.transposed]: #linalg.transp.transposed
171
+ [mask.array.assign]: #mask.array.assign
172
+ [mask.array.comp.assign]: #mask.array.comp.assign
173
+ [mask.array.fill]: #mask.array.fill
174
+ [math.constants]: #math.constants
175
+ [mdspan.accessor.reqmts]: containers.md#mdspan.accessor.reqmts
176
+ [mdspan.layout.policy.reqmts]: containers.md#mdspan.layout.policy.reqmts
177
+ [mdspan.overview]: containers.md#mdspan.overview
178
+ [namespace.std]: library.md#namespace.std
179
+ [numarray]: #numarray
180
+ [numbers]: #numbers
181
+ [numbers.syn]: #numbers.syn
182
+ [numeric.requirements]: #numeric.requirements
183
+ [numerics]: #numerics
184
+ [numerics.c]: #numerics.c
185
+ [numerics.c.ckdint]: #numerics.c.ckdint
186
+ [numerics.defns]: algorithms.md#numerics.defns
187
+ [numerics.general]: #numerics.general
188
+ [numerics.summary]: #numerics.summary
189
+ [output.iterators]: iterators.md#output.iterators
190
+ [over.match.general]: over.md#over.match.general
191
+ [rand]: #rand
192
+ [rand.adapt]: #rand.adapt
193
+ [rand.adapt.disc]: #rand.adapt.disc
194
+ [rand.adapt.general]: #rand.adapt.general
195
+ [rand.adapt.ibits]: #rand.adapt.ibits
196
+ [rand.adapt.shuf]: #rand.adapt.shuf
197
+ [rand.device]: #rand.device
198
+ [rand.dist]: #rand.dist
199
+ [rand.dist.bern]: #rand.dist.bern
200
+ [rand.dist.bern.bernoulli]: #rand.dist.bern.bernoulli
201
+ [rand.dist.bern.bin]: #rand.dist.bern.bin
202
+ [rand.dist.bern.geo]: #rand.dist.bern.geo
203
+ [rand.dist.bern.negbin]: #rand.dist.bern.negbin
204
+ [rand.dist.general]: #rand.dist.general
205
+ [rand.dist.norm]: #rand.dist.norm
206
+ [rand.dist.norm.cauchy]: #rand.dist.norm.cauchy
207
+ [rand.dist.norm.chisq]: #rand.dist.norm.chisq
208
+ [rand.dist.norm.f]: #rand.dist.norm.f
209
+ [rand.dist.norm.lognormal]: #rand.dist.norm.lognormal
210
+ [rand.dist.norm.normal]: #rand.dist.norm.normal
211
+ [rand.dist.norm.t]: #rand.dist.norm.t
212
+ [rand.dist.pois]: #rand.dist.pois
213
+ [rand.dist.pois.exp]: #rand.dist.pois.exp
214
+ [rand.dist.pois.extreme]: #rand.dist.pois.extreme
215
+ [rand.dist.pois.gamma]: #rand.dist.pois.gamma
216
+ [rand.dist.pois.poisson]: #rand.dist.pois.poisson
217
+ [rand.dist.pois.weibull]: #rand.dist.pois.weibull
218
+ [rand.dist.samp]: #rand.dist.samp
219
+ [rand.dist.samp.discrete]: #rand.dist.samp.discrete
220
+ [rand.dist.samp.pconst]: #rand.dist.samp.pconst
221
+ [rand.dist.samp.plinear]: #rand.dist.samp.plinear
222
+ [rand.dist.uni]: #rand.dist.uni
223
+ [rand.dist.uni.int]: #rand.dist.uni.int
224
+ [rand.dist.uni.real]: #rand.dist.uni.real
225
+ [rand.eng]: #rand.eng
226
+ [rand.eng.general]: #rand.eng.general
227
+ [rand.eng.lcong]: #rand.eng.lcong
228
+ [rand.eng.mers]: #rand.eng.mers
229
+ [rand.eng.philox]: #rand.eng.philox
230
+ [rand.eng.philox.f]: #rand.eng.philox.f
231
+ [rand.eng.sub]: #rand.eng.sub
232
+ [rand.general]: #rand.general
233
+ [rand.predef]: #rand.predef
234
+ [rand.req]: #rand.req
235
+ [rand.req.adapt]: #rand.req.adapt
236
+ [rand.req.dist]: #rand.req.dist
237
+ [rand.req.eng]: #rand.req.eng
238
+ [rand.req.genl]: #rand.req.genl
239
+ [rand.req.seedseq]: #rand.req.seedseq
240
+ [rand.req.urng]: #rand.req.urng
241
+ [rand.synopsis]: #rand.synopsis
242
+ [rand.util]: #rand.util
243
+ [rand.util.canonical]: #rand.util.canonical
244
+ [rand.util.seedseq]: #rand.util.seedseq
245
+ [random.access.iterators]: iterators.md#random.access.iterators
246
+ [res.on.data.races]: library.md#res.on.data.races
247
+ [sf.cmath]: #sf.cmath
248
+ [sf.cmath.assoc.laguerre]: #sf.cmath.assoc.laguerre
249
+ [sf.cmath.assoc.legendre]: #sf.cmath.assoc.legendre
250
+ [sf.cmath.beta]: #sf.cmath.beta
251
+ [sf.cmath.comp.ellint.1]: #sf.cmath.comp.ellint.1
252
+ [sf.cmath.comp.ellint.2]: #sf.cmath.comp.ellint.2
253
+ [sf.cmath.comp.ellint.3]: #sf.cmath.comp.ellint.3
254
+ [sf.cmath.cyl.bessel.i]: #sf.cmath.cyl.bessel.i
255
+ [sf.cmath.cyl.bessel.j]: #sf.cmath.cyl.bessel.j
256
+ [sf.cmath.cyl.bessel.k]: #sf.cmath.cyl.bessel.k
257
+ [sf.cmath.cyl.neumann]: #sf.cmath.cyl.neumann
258
+ [sf.cmath.ellint.1]: #sf.cmath.ellint.1
259
+ [sf.cmath.ellint.2]: #sf.cmath.ellint.2
260
+ [sf.cmath.ellint.3]: #sf.cmath.ellint.3
261
+ [sf.cmath.expint]: #sf.cmath.expint
262
+ [sf.cmath.general]: #sf.cmath.general
263
+ [sf.cmath.hermite]: #sf.cmath.hermite
264
+ [sf.cmath.laguerre]: #sf.cmath.laguerre
265
+ [sf.cmath.legendre]: #sf.cmath.legendre
266
+ [sf.cmath.riemann.zeta]: #sf.cmath.riemann.zeta
267
+ [sf.cmath.sph.bessel]: #sf.cmath.sph.bessel
268
+ [sf.cmath.sph.legendre]: #sf.cmath.sph.legendre
269
+ [sf.cmath.sph.neumann]: #sf.cmath.sph.neumann
270
+ [simd]: #simd
271
+ [simd.alg]: #simd.alg
272
+ [simd.binary]: #simd.binary
273
+ [simd.bit]: #simd.bit
274
+ [simd.cassign]: #simd.cassign
275
+ [simd.class]: #simd.class
276
+ [simd.comparison]: #simd.comparison
277
+ [simd.complex.access]: #simd.complex.access
278
+ [simd.complex.math]: #simd.complex.math
279
+ [simd.cond]: #simd.cond
280
+ [simd.creation]: #simd.creation
281
+ [simd.ctor]: #simd.ctor
282
+ [simd.expos]: #simd.expos
283
+ [simd.expos.abi]: #simd.expos.abi
284
+ [simd.expos.defn]: #simd.expos.defn
285
+ [simd.flags]: #simd.flags
286
+ [simd.flags.oper]: #simd.flags.oper
287
+ [simd.flags.overview]: #simd.flags.overview
288
+ [simd.general]: #simd.general
289
+ [simd.iterator]: #simd.iterator
290
+ [simd.loadstore]: #simd.loadstore
291
+ [simd.mask.binary]: #simd.mask.binary
292
+ [simd.mask.cassign]: #simd.mask.cassign
293
+ [simd.mask.class]: #simd.mask.class
294
+ [simd.mask.comparison]: #simd.mask.comparison
295
+ [simd.mask.cond]: #simd.mask.cond
296
+ [simd.mask.conv]: #simd.mask.conv
297
+ [simd.mask.ctor]: #simd.mask.ctor
298
+ [simd.mask.nonmembers]: #simd.mask.nonmembers
299
+ [simd.mask.overview]: #simd.mask.overview
300
+ [simd.mask.reductions]: #simd.mask.reductions
301
+ [simd.mask.subscr]: #simd.mask.subscr
302
+ [simd.mask.unary]: #simd.mask.unary
303
+ [simd.math]: #simd.math
304
+ [simd.nonmembers]: #simd.nonmembers
305
+ [simd.overview]: #simd.overview
306
+ [simd.permute.dynamic]: #simd.permute.dynamic
307
+ [simd.permute.mask]: #simd.permute.mask
308
+ [simd.permute.memory]: #simd.permute.memory
309
+ [simd.permute.static]: #simd.permute.static
310
+ [simd.reductions]: #simd.reductions
311
+ [simd.subscr]: #simd.subscr
312
+ [simd.syn]: #simd.syn
313
+ [simd.traits]: #simd.traits
314
+ [simd.unary]: #simd.unary
315
+ [slice.access]: #slice.access
316
+ [slice.arr.assign]: #slice.arr.assign
317
+ [slice.arr.comp.assign]: #slice.arr.comp.assign
318
+ [slice.arr.fill]: #slice.arr.fill
319
+ [slice.ops]: #slice.ops
320
+ [stdckdint.h.syn]: #stdckdint.h.syn
321
+ [strings]: strings.md#strings
322
+ [template.gslice.array]: #template.gslice.array
323
+ [template.gslice.array.overview]: #template.gslice.array.overview
324
+ [template.indirect.array]: #template.indirect.array
325
+ [template.indirect.array.overview]: #template.indirect.array.overview
326
+ [template.mask.array]: #template.mask.array
327
+ [template.mask.array.overview]: #template.mask.array.overview
328
+ [template.slice.array]: #template.slice.array
329
+ [template.slice.array.overview]: #template.slice.array.overview
330
+ [template.valarray]: #template.valarray
331
+ [template.valarray.overview]: #template.valarray.overview
332
+ [term.literal.type]: basic.md#term.literal.type
333
+ [thread.jthread.class]: thread.md#thread.jthread.class
334
+ [thread.thread.class]: thread.md#thread.thread.class
335
+ [utility.arg.requirements]: library.md#utility.arg.requirements
336
+ [valarray.access]: #valarray.access
337
+ [valarray.assign]: #valarray.assign
338
+ [valarray.binary]: #valarray.binary
339
+ [valarray.cassign]: #valarray.cassign
340
+ [valarray.comparison]: #valarray.comparison
341
+ [valarray.cons]: #valarray.cons
342
+ [valarray.members]: #valarray.members
343
+ [valarray.nonmembers]: #valarray.nonmembers
344
+ [valarray.range]: #valarray.range
345
+ [valarray.special]: #valarray.special
346
+ [valarray.sub]: #valarray.sub
347
+ [valarray.syn]: #valarray.syn
348
+ [valarray.transcend]: #valarray.transcend
349
+ [valarray.unary]: #valarray.unary
350
+ [views.multidim]: containers.md#views.multidim
351
+
352
+ [^1]: In other words, value types. These include arithmetic types,
353
+ pointers, the library class `complex`, and instantiations of
354
+ `valarray` for value types.
355
+
356
+ [^2]: This constructor (as well as the subsequent corresponding `seed()`
357
+ function) can be particularly useful to applications requiring a
358
+ large number of independent random sequences.
359
+
360
+ [^3]: The name of this engine refers, in part, to a property of its
361
+ period: For properly-selected values of the parameters, the period
362
+ is closely related to a large Mersenne prime number.
363
+
364
+ [^4]: The parameter is intended to allow an implementation to
365
+ differentiate between different sources of randomness.
366
+
367
+ [^5]: If a device has n states whose respective probabilities are
368
+ P₀, …, Pₙ₋₁, the device entropy S is defined as
369
+ $S = - \sum_{i=0}^{n-1} P_i \cdot \log P_i$.
370
+
371
+ [^6]: d is introduced to avoid any attempt to produce more bits of
372
+ randomness than can be held in `RealType`.
373
+
374
+ [^7]: The distribution corresponding to this probability density
375
+ function is also known (with a possible change of variable) as the
376
+ Gumbel Type I, the log-Weibull, or the Fisher-Tippett Type I
377
+ distribution.
378
+
379
+ [^8]: [[implimits]] recommends a minimum number of recursively nested
380
+ template instantiations. This requirement thus indirectly suggests a
381
+ minimum allowable complexity for valarray expressions.
382
+
383
+ [^9]: The intent is to specify an array template that has the minimum
384
+ functionality necessary to address aliasing ambiguities and the
385
+ proliferation of temporary objects. Thus, the `valarray` template is
386
+ neither a matrix class nor a field class. However, it is a very
387
+ useful building block for designing such classes.
388
+
389
+ [^10]: This default constructor is essential, since arrays of `valarray`
390
+ can be useful. After initialization, the length of an empty array
391
+ can be increased with the `resize` member function.
392
+
393
+ [^11]: This constructor is the preferred method for converting a C array
394
+ to a `valarray` object.
395
+
396
+ [^12]: This copy constructor creates a distinct array rather than an
397
+ alias. Implementations in which arrays share storage are permitted,
398
+ but they would need to implement a copy-on-reference mechanism to
399
+ ensure that arrays are conceptually distinct.
400
+
401
+ [^13]: BLAS stands for *Basic Linear Algebra Subprograms*. C++ programs
402
+ can instantiate this class. See, for example, Dongarra, Du Croz,
403
+ Duff, and Hammerling: *A set of Level 3 Basic Linear Algebra
404
+ Subprograms*; Technical Report MCS-P1-0888, Argonne National
405
+ Laboratory (USA), Mathematics and Computer Science Division, August,
406
+ 1988.
407
+
408
+ [^14]: A mathematical function is mathematically defined for a given set
409
+ of argument values (a) if it is explicitly defined for that set of
410
+ argument values, or (b) if its limiting value exists and does not
411
+ depend on the direction of approach.