~ chicken-core (chicken-5) a12f66aa19e3f985e89d51a2fd8d18c6a7c43e84


commit a12f66aa19e3f985e89d51a2fd8d18c6a7c43e84
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Mon Aug 11 09:49:40 2025 +0200
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Mon Aug 11 09:49:40 2025 +0200

    fix bogus index calculation for complex numvectors

diff --git a/srfi-4.scm b/srfi-4.scm
index 3e8c3fb4..600fd401 100644
--- a/srfi-4.scm
+++ b/srfi-4.scm
@@ -203,8 +203,8 @@ EOF
          (len (fx/ (##core#inline "C_i_bytevector_length" bv) 8)))
     (##sys#check-range i 0 len 'c64vector-set!)
     (##sys#check-number y 'c64vector-set!)
-    (##core#inline "C_u_i_f32vector_set" x (fx/ i 2) (->f (real-part y)))
-    (##core#inline "C_u_i_f32vector_set" x (fx+ (fx/ i 2) 1) (->f (imag-part y)))))
+    (##core#inline "C_u_i_f32vector_set" x (fx* i 2) (->f (real-part y)))
+    (##core#inline "C_u_i_f32vector_set" x (fx+ (fx* i 2) 1) (->f (imag-part y)))))
 
 (define (c128vector-set! x i y)
   (##sys#check-structure x 'c128vector 'c128vector-set!)
@@ -212,8 +212,8 @@ EOF
          (len (fx/ (##core#inline "C_i_bytevector_length" bv) 16)))
     (##sys#check-range i 0 len 'c128vector-set!)
     (##sys#check-number y 'c128vector-set!)
-    (##core#inline "C_u_i_f64vector_set" x (fx/ i 2) (->f (real-part y)))
-    (##core#inline "C_u_i_f64vector_set" x (fx+ (fx/ i 2) 1) (->f (imag-part y)))))
+    (##core#inline "C_u_i_f64vector_set" x (fx* i 2) (->f (real-part y)))
+    (##core#inline "C_u_i_f64vector_set" x (fx+ (fx* i 2) 1) (->f (imag-part y)))))
 
 (define u8vector-ref bytevector-u8-ref)
 
Trap