@@ -294,94 +294,103 @@ where Wrapped.TangentVector: ElementaryFunctions {
294
294
///
295
295
/// For real types, if `x` is negative the result is `.nan`. For complex
296
296
/// types there is a branch cut on the negative real axis.
297
- public static func sqrt( _ x: Self ) -> Self { . init ( x. value. map ( Wrapped . TangentVector. sqrt) ) }
297
+ public static func sqrt( _ x: Self ) -> Self { Self ( x. value. map ( Wrapped . TangentVector. sqrt) ) }
298
298
299
299
/// The cosine of `x`, interpreted as an angle in radians.
300
- public static func cos( _ x: Self ) -> Self { . init ( x. value. map ( Wrapped . TangentVector. sqrt ) ) }
300
+ public static func cos( _ x: Self ) -> Self { Self ( x. value. map ( Wrapped . TangentVector. cos ) ) }
301
301
302
302
/// The sine of `x`, interpreted as an angle in radians.
303
- public static func sin( _ x: Self ) -> Self { . init ( x. value. map ( Wrapped . TangentVector. sqrt ) ) }
303
+ public static func sin( _ x: Self ) -> Self { Self ( x. value. map ( Wrapped . TangentVector. sin ) ) }
304
304
305
305
/// The tangent of `x`, interpreted as an angle in radians.
306
- public static func tan( _ x: Self ) -> Self { . init ( x. value. map ( Wrapped . TangentVector. sqrt ) ) }
306
+ public static func tan( _ x: Self ) -> Self { Self ( x. value. map ( Wrapped . TangentVector. tan ) ) }
307
307
308
308
/// The inverse cosine of `x` in radians.
309
- public static func acos( _ x: Self ) -> Self { . init ( x. value. map ( Wrapped . TangentVector. sqrt ) ) }
309
+ public static func acos( _ x: Self ) -> Self { Self ( x. value. map ( Wrapped . TangentVector. acos ) ) }
310
310
311
311
/// The inverse sine of `x` in radians.
312
- public static func asin( _ x: Self ) -> Self { . init ( x. value. map ( Wrapped . TangentVector. sqrt ) ) }
312
+ public static func asin( _ x: Self ) -> Self { Self ( x. value. map ( Wrapped . TangentVector. asin ) ) }
313
313
314
314
/// The inverse tangent of `x` in radians.
315
- public static func atan( _ x: Self ) -> Self { . init ( x. value. map ( Wrapped . TangentVector. sqrt ) ) }
315
+ public static func atan( _ x: Self ) -> Self { Self ( x. value. map ( Wrapped . TangentVector. atan ) ) }
316
316
317
317
/// The hyperbolic cosine of `x`.
318
- public static func cosh( _ x: Self ) -> Self { . init ( x. value. map ( Wrapped . TangentVector. sqrt ) ) }
318
+ public static func cosh( _ x: Self ) -> Self { Self ( x. value. map ( Wrapped . TangentVector. cosh ) ) }
319
319
320
320
/// The hyperbolic sine of `x`.
321
- public static func sinh( _ x: Self ) -> Self { . init ( x. value. map ( Wrapped . TangentVector. sqrt ) ) }
321
+ public static func sinh( _ x: Self ) -> Self { Self ( x. value. map ( Wrapped . TangentVector. sinh ) ) }
322
322
323
323
/// The hyperbolic tangent of `x`.
324
- public static func tanh( _ x: Self ) -> Self { . init ( x. value. map ( Wrapped . TangentVector. sqrt ) ) }
324
+ public static func tanh( _ x: Self ) -> Self { Self ( x. value. map ( Wrapped . TangentVector. tanh ) ) }
325
325
326
326
/// The inverse hyperbolic cosine of `x`.
327
- public static func acosh( _ x: Self ) -> Self { . init ( x. value. map ( Wrapped . TangentVector. sqrt ) ) }
327
+ public static func acosh( _ x: Self ) -> Self { Self ( x. value. map ( Wrapped . TangentVector. acosh ) ) }
328
328
329
329
/// The inverse hyperbolic sine of `x`.
330
- public static func asinh( _ x: Self ) -> Self { . init ( x. value. map ( Wrapped . TangentVector. sqrt ) ) }
330
+ public static func asinh( _ x: Self ) -> Self { Self ( x. value. map ( Wrapped . TangentVector. asinh ) ) }
331
331
332
332
/// The inverse hyperbolic tangent of `x`.
333
- public static func atanh( _ x: Self ) -> Self { . init ( x. value. map ( Wrapped . TangentVector. sqrt ) ) }
333
+ public static func atanh( _ x: Self ) -> Self { Self ( x. value. map ( Wrapped . TangentVector. atanh ) ) }
334
334
335
335
/// The exponential function applied to `x`, or `e**x`.
336
- public static func exp( _ x: Self ) -> Self { . init ( x. value. map ( Wrapped . TangentVector. sqrt ) ) }
336
+ public static func exp( _ x: Self ) -> Self { Self ( x. value. map ( Wrapped . TangentVector. exp ) ) }
337
337
338
338
/// Two raised to to power `x`.
339
- public static func exp2( _ x: Self ) -> Self { . init ( x. value. map ( Wrapped . TangentVector. sqrt ) ) }
339
+ public static func exp2( _ x: Self ) -> Self { Self ( x. value. map ( Wrapped . TangentVector. exp2 ) ) }
340
340
341
341
/// Ten raised to to power `x`.
342
- public static func exp10( _ x: Self ) -> Self { . init ( x. value. map ( Wrapped . TangentVector. sqrt ) ) }
342
+ public static func exp10( _ x: Self ) -> Self { Self ( x. value. map ( Wrapped . TangentVector. exp10 ) ) }
343
343
344
344
/// `exp(x) - 1` evaluated so as to preserve accuracy close to zero.
345
- public static func expm1( _ x: Self ) -> Self { . init ( x. value. map ( Wrapped . TangentVector. sqrt ) ) }
345
+ public static func expm1( _ x: Self ) -> Self { Self ( x. value. map ( Wrapped . TangentVector. expm1 ) ) }
346
346
347
347
/// The natural logarithm of `x`.
348
- public static func log( _ x: Self ) -> Self { . init ( x. value. map ( Wrapped . TangentVector. sqrt ) ) }
348
+ public static func log( _ x: Self ) -> Self { Self ( x. value. map ( Wrapped . TangentVector. log ) ) }
349
349
350
350
/// The base-two logarithm of `x`.
351
- public static func log2( _ x: Self ) -> Self { . init ( x. value. map ( Wrapped . TangentVector. sqrt ) ) }
351
+ public static func log2( _ x: Self ) -> Self { Self ( x. value. map ( Wrapped . TangentVector. log2 ) ) }
352
352
353
353
/// The base-ten logarithm of `x`.
354
- public static func log10( _ x: Self ) -> Self { . init ( x. value. map ( Wrapped . TangentVector. sqrt ) ) }
354
+ public static func log10( _ x: Self ) -> Self { Self ( x. value. map ( Wrapped . TangentVector. log10 ) ) }
355
355
356
356
/// `log(1 + x)` evaluated so as to preserve accuracy close to zero.
357
- public static func log1p( _ x: Self ) -> Self { . init ( x. value. map ( Wrapped . TangentVector. sqrt ) ) }
357
+ public static func log1p( _ x: Self ) -> Self { Self ( x. value. map ( Wrapped . TangentVector. log1p ) ) }
358
358
359
359
/// `exp(y log(x))` computed without loss of intermediate precision.
360
360
///
361
361
/// For real types, if `x` is negative the result is NaN, even if `y` has
362
362
/// an integral value. For complex types, there is a branch cut on the
363
363
/// negative real axis.
364
- public static func pow( _ x: Self , _ y: Self ) -> Self { . init( x. value. map ( Wrapped . TangentVector. sqrt) ) }
364
+ public static func pow( _ x: Self , _ y: Self ) -> Self {
365
+ switch ( x. value, y. value) {
366
+ case let ( x? , y? ) : return Self ( Wrapped . TangentVector. pow ( x, y) )
367
+ default : return Self ( nil )
368
+ }
369
+ }
365
370
366
371
/// `x` raised to the `n`th power.
367
372
///
368
373
/// The product of `n` copies of `x`.
369
- public static func pow( _ x: Self , _ n: Int ) -> Self { . init( x. value. map ( { x in Wrapped . TangentVector. pow ( x, n) } ) ) }
374
+ public static func pow( _ x: Self , _ n: Int ) -> Self {
375
+ Self ( x. value. map ( { x in Wrapped . TangentVector. pow ( x, n) } ) )
376
+ }
370
377
371
378
/// The `n`th root of `x`.
372
379
///
373
380
/// For real types, if `x` is negative and `n` is even, the result is NaN.
374
381
/// For complex types, there is a branch cut along the negative real axis.
375
- public static func root( _ x: Self , _ n: Int ) -> Self { . init( x. value. map ( { x in Wrapped . TangentVector. root ( x, n) } ) ) }
382
+ public static func root( _ x: Self , _ n: Int ) -> Self {
383
+ Self ( x. value. map ( { x in Wrapped . TangentVector. root ( x, n) } ) )
384
+ }
376
385
}
377
386
378
387
extension Optional . TangentVector : PointwiseMultiplicative
379
388
where Wrapped. TangentVector: PointwiseMultiplicative {
380
389
public static var one : Self {
381
- . init ( Wrapped . TangentVector. one)
390
+ Self ( Wrapped . TangentVector. one)
382
391
}
383
392
384
- public var reciprocal : Self { . init ( value. map { $0. reciprocal } ) }
393
+ public var reciprocal : Self { Self ( value. map { $0. reciprocal } ) }
385
394
386
395
public static func .* ( lhs: Self , rhs: Self ) -> Self {
387
396
switch ( lhs. value, rhs. value) {
@@ -399,15 +408,17 @@ extension Optional.TangentVector: VectorProtocol
399
408
where Wrapped. TangentVector: VectorProtocol {
400
409
public typealias VectorSpaceScalar = Wrapped . TangentVector . VectorSpaceScalar
401
410
402
- public func adding( _ x: VectorSpaceScalar ) -> Self { . init ( value. map { $0. adding ( x) } ) }
411
+ public func adding( _ x: VectorSpaceScalar ) -> Self { Self ( value. map { $0. adding ( x) } ) }
403
412
404
413
public mutating func add( _ x: VectorSpaceScalar ) { value? . add ( x) }
405
414
406
- public func subtracting( _ x: VectorSpaceScalar ) -> Self { . init ( value. map { $0. subtracting ( x) } ) }
415
+ public func subtracting( _ x: VectorSpaceScalar ) -> Self { Self ( value. map { $0. subtracting ( x) } ) }
407
416
408
417
public mutating func subtract( _ x: VectorSpaceScalar ) { value? . subtract ( x) }
409
418
410
- public func scaled( by scale: VectorSpaceScalar ) -> Self { . init( value. map { $0. scaled ( by: scale) } ) }
419
+ public func scaled( by scale: VectorSpaceScalar ) -> Self {
420
+ Self ( value. map { $0. scaled ( by: scale) } )
421
+ }
411
422
412
423
public mutating func scale( by scale: VectorSpaceScalar ) {
413
424
value? . scale ( by: scale)
0 commit comments