~ chicken-core (master) 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