chiark
/
gitweb
/
~ianmdlvl
/
otter.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
b724ba6
)
geometry: Promote len2
author
Ian Jackson
<ijackson@chiark.greenend.org.uk>
Fri, 2 Apr 2021 21:16:24 +0000
(22:16 +0100)
committer
Ian Jackson
<ijackson@chiark.greenend.org.uk>
Fri, 2 Apr 2021 21:16:24 +0000
(22:16 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
base/geometry.rs
patch
|
blob
|
history
diff --git
a/base/geometry.rs
b/base/geometry.rs
index 4040207da5567da552090c40d8ea0272522adbc6..ab5527aaadd70f68c9b067634c35d5c1fb3e86ef 100644
(file)
--- a/
base/geometry.rs
+++ b/
base/geometry.rs
@@
-104,6
+104,15
@@
impl<T> PosC<T> {
pub fn zero() -> Self where T: num_traits::Zero + Copy {
PosC::both(<T as num_traits::Zero>::zero())
}
+
+ #[throws(CoordinateOverflow)]
+ pub fn len2(self) -> f64 where PosC<T>: PosPromote {
+ self.promote().coords.iter()
+ .try_fold(0., |b, &c| {
+ let c2 = c.checked_mul(c)?;
+ b.checked_add(c2)
+ })?
+ }
}
impl<T> PosC<T> where T: Copy {
pub fn x(self) -> T { self.coords[0] }