From Jason Turner

[numerics.c.ckdint]

Diff to HTML by rtfpessoa

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