shithub: riscv

Download patch

ref: 52710ef5429087506ad2bdd47b96eb2534d21f7a
parent: f5fc316da4e45531a97dae8df8869ffea28a480e
author: rodri <rgl@antares-labs.eu>
date: Sun Apr 6 20:32:53 EDT 2025

libgeometry: use compound literals instead of constructors

this gives us up to 2x faster execution.

--- a/sys/src/libgeometry/point.c
+++ b/sys/src/libgeometry/point.c
@@ -19,25 +19,25 @@
 Point2
 addpt2(Point2 a, Point2 b)
 {
-	return Pt2(a.x+b.x, a.y+b.y, a.w+b.w);
+	return (Point2){a.x+b.x, a.y+b.y, a.w+b.w};
 }
 
 Point2
 subpt2(Point2 a, Point2 b)
 {
-	return Pt2(a.x-b.x, a.y-b.y, a.w-b.w);
+	return (Point2){a.x-b.x, a.y-b.y, a.w-b.w};
 }
 
 Point2
 mulpt2(Point2 p, double s)
 {
-	return Pt2(p.x*s, p.y*s, p.w*s);
+	return (Point2){p.x*s, p.y*s, p.w*s};
 }
 
 Point2
 divpt2(Point2 p, double s)
 {
-	return Pt2(p.x/s, p.y/s, p.w/s);
+	return (Point2){p.x/s, p.y/s, p.w/s};
 }
 
 Point2
@@ -44,11 +44,11 @@
 lerp2(Point2 a, Point2 b, double t)
 {
 	t = fclamp(t, 0, 1);
-	return Pt2(
+	return (Point2){
 		flerp(a.x, b.x, t),
 		flerp(a.y, b.y, t),
 		flerp(a.w, b.w, t)
-	);
+	};
 }
 
 Point2
@@ -79,8 +79,8 @@
 
 	len = vec2len(v);
 	if(len == 0)
-		return Pt2(0,0,0);
-	return Pt2(v.x/len, v.y/len, 0);
+		return (Point2){0,0,0};
+	return (Point2){v.x/len, v.y/len, 0};
 }
 
 /*
@@ -141,25 +141,25 @@
 Point3
 addpt3(Point3 a, Point3 b)
 {
-	return Pt3(a.x+b.x, a.y+b.y, a.z+b.z, a.w+b.w);
+	return (Point3){a.x+b.x, a.y+b.y, a.z+b.z, a.w+b.w};
 }
 
 Point3
 subpt3(Point3 a, Point3 b)
 {
-	return Pt3(a.x-b.x, a.y-b.y, a.z-b.z, a.w-b.w);
+	return (Point3){a.x-b.x, a.y-b.y, a.z-b.z, a.w-b.w};
 }
 
 Point3
 mulpt3(Point3 p, double s)
 {
-	return Pt3(p.x*s, p.y*s, p.z*s, p.w*s);
+	return (Point3){p.x*s, p.y*s, p.z*s, p.w*s};
 }
 
 Point3
 divpt3(Point3 p, double s)
 {
-	return Pt3(p.x/s, p.y/s, p.z/s, p.w/s);
+	return (Point3){p.x/s, p.y/s, p.z/s, p.w/s};
 }
 
 Point3
@@ -166,12 +166,12 @@
 lerp3(Point3 a, Point3 b, double t)
 {
 	t = fclamp(t, 0, 1);
-	return Pt3(
+	return (Point3){
 		flerp(a.x, b.x, t),
 		flerp(a.y, b.y, t),
 		flerp(a.z, b.z, t),
 		flerp(a.w, b.w, t)
-	);
+	};
 }
 
 Point3
@@ -192,12 +192,12 @@
 Point3
 crossvec3(Point3 a, Point3 b)
 {
-	return Pt3(
+	return (Point3){
 		a.y*b.z - a.z*b.y,
 		a.z*b.x - a.x*b.z,
 		a.x*b.y - a.y*b.x,
 		0
-	);
+	};
 }
 
 double
@@ -213,8 +213,8 @@
 
 	len = vec3len(v);
 	if(len == 0)
-		return Pt3(0,0,0,0);
-	return Pt3(v.x/len, v.y/len, v.z/len, 0);
+		return (Point3){0,0,0,0};
+	return (Point3){v.x/len, v.y/len, v.z/len, 0};
 }
 
 int
--