mirror of
https://codeberg.org/ziglings/exercises.git
synced 2024-12-26 01:20:30 +00:00
Fixed formating, created patch file.
This commit is contained in:
parent
46e8fc0b61
commit
bfed660020
2 changed files with 25 additions and 25 deletions
|
@ -74,26 +74,26 @@
|
||||||
// SIMD instructions, whenever possible.
|
// SIMD instructions, whenever possible.
|
||||||
//
|
//
|
||||||
// Defining vectors in Zig is straightforwards. No library import is needed.
|
// Defining vectors in Zig is straightforwards. No library import is needed.
|
||||||
const v1 = @Vector(3, i32) { 1, 10, 100};
|
const v1 = @Vector(3, i32){ 1, 10, 100 };
|
||||||
const v2 = @Vector(3, f32) {2.0, 3.0, 5.0};
|
const v2 = @Vector(3, f32){ 2.0, 3.0, 5.0 };
|
||||||
|
|
||||||
// Vectors support the same builtin operators as their underlying base types.
|
// Vectors support the same builtin operators as their underlying base types.
|
||||||
const v3 = v1 + v1; // { 2, 20, 200};
|
const v3 = v1 + v1; // { 2, 20, 200};
|
||||||
const v4 = v2 * v2; // { 4.0, 9.0, 25.0};
|
const v4 = v2 * v2; // { 4.0, 9.0, 25.0};
|
||||||
|
|
||||||
// Intrinsics that apply to base types usually extend to vectors.
|
// Intrinsics that apply to base types usually extend to vectors.
|
||||||
const v5 : @Vector(3, f32) = @floatFromInt(v3); // { 2.0, 20.0, 200.0}
|
const v5: @Vector(3, f32) = @floatFromInt(v3); // { 2.0, 20.0, 200.0}
|
||||||
const v6 = v4 - v5; // { 2.0, -11.0, -175.0}
|
const v6 = v4 - v5; // { 2.0, -11.0, -175.0}
|
||||||
const v7 = @abs(v6); // { 2.0, 11.0, 175.0}
|
const v7 = @abs(v6); // { 2.0, 11.0, 175.0}
|
||||||
|
|
||||||
// We can make constant vectors, and reduce vectors.
|
// We can make constant vectors, and reduce vectors.
|
||||||
const v8 : @Vector(4, u8) = @splat(2); // { 2, 2, 2, 2}
|
const v8: @Vector(4, u8) = @splat(2); // { 2, 2, 2, 2}
|
||||||
const v8_sum = @reduce(.Add, v8); // 8
|
const v8_sum = @reduce(.Add, v8); // 8
|
||||||
const v8_min = @reduce(.Min, v8); // 2
|
const v8_min = @reduce(.Min, v8); // 2
|
||||||
|
|
||||||
// Fixed-length arrays can be automatically assigned to vectors (and vice-versa).
|
// Fixed-length arrays can be automatically assigned to vectors (and vice-versa).
|
||||||
const single_digit_primes = [4] i8 {2, 3, 5, 7};
|
const single_digit_primes = [4]i8{ 2, 3, 5, 7 };
|
||||||
const prime_vector : @Vector(4, i8) = single_digit_primes;
|
const prime_vector: @Vector(4, i8) = single_digit_primes;
|
||||||
|
|
||||||
// Now let's use vectors to simplify and optimize some code!
|
// Now let's use vectors to simplify and optimize some code!
|
||||||
//
|
//
|
||||||
|
@ -103,8 +103,8 @@ const prime_vector : @Vector(4, i8) = single_digit_primes;
|
||||||
//
|
//
|
||||||
// Ewa wrote the following function to figure this out.
|
// Ewa wrote the following function to figure this out.
|
||||||
|
|
||||||
fn calcMaxPairwiseDiffOld( list1 : [4] f32, list2 : [4] f32) f32 {
|
fn calcMaxPairwiseDiffOld(list1: [4]f32, list2: [4]f32) f32 {
|
||||||
var max_diff : f32 = 0;
|
var max_diff: f32 = 0;
|
||||||
for (list1, list2) |n1, n2| {
|
for (list1, list2) |n1, n2| {
|
||||||
const abs_diff = @abs(n1 - n2);
|
const abs_diff = @abs(n1 - n2);
|
||||||
if (abs_diff > max_diff) {
|
if (abs_diff > max_diff) {
|
||||||
|
@ -120,7 +120,7 @@ fn calcMaxPairwiseDiffOld( list1 : [4] f32, list2 : [4] f32) f32 {
|
||||||
// Help Ewa finish the vector version! The examples above should help.
|
// Help Ewa finish the vector version! The examples above should help.
|
||||||
|
|
||||||
const Vec4 = @Vector(4, f32);
|
const Vec4 = @Vector(4, f32);
|
||||||
fn calcMaxPairwiseDiffNew( a : Vec4, b : Vec4) f32 {
|
fn calcMaxPairwiseDiffNew(a: Vec4, b: Vec4) f32 {
|
||||||
const abs_diff_vec = ???;
|
const abs_diff_vec = ???;
|
||||||
const max_diff = @reduce(???, abs_diff_vec);
|
const max_diff = @reduce(???, abs_diff_vec);
|
||||||
return max_diff;
|
return max_diff;
|
||||||
|
@ -138,8 +138,8 @@ const std = @import("std");
|
||||||
const print = std.debug.print;
|
const print = std.debug.print;
|
||||||
|
|
||||||
pub fn main() void {
|
pub fn main() void {
|
||||||
const l1 = [4] f32 { 3.141, 2.718, 0.577, 1.000};
|
const l1 = [4]f32{ 3.141, 2.718, 0.577, 1.000 };
|
||||||
const l2 = [4] f32 { 3.154, 2.707, 0.591, 0.993};
|
const l2 = [4]f32{ 3.154, 2.707, 0.591, 0.993 };
|
||||||
const mpd_old = calcMaxPairwiseDiffOld(l1, l2);
|
const mpd_old = calcMaxPairwiseDiffOld(l1, l2);
|
||||||
const mpd_new = calcMaxPairwiseDiffNew(l1, l2);
|
const mpd_new = calcMaxPairwiseDiffNew(l1, l2);
|
||||||
print("Max difference (old fn): {d: >5.3}\n", .{mpd_old});
|
print("Max difference (old fn): {d: >5.3}\n", .{mpd_old});
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
--- exercises/109_vectors.zig 2024-11-03 11:17:00.928652000 +1000
|
--- exercises/109_vectors.zig 2024-11-07 14:57:09.673383618 +0100
|
||||||
+++ answers/109_vectors.zig 2024-11-07 13:11:23.838667200 +1000
|
+++ answers/109_vectors.zig 2024-11-07 14:22:59.069150138 +0100
|
||||||
@@ -121,8 +121,8 @@
|
@@ -121,8 +121,8 @@
|
||||||
|
|
||||||
const Vec4 = @Vector(4, f32);
|
const Vec4 = @Vector(4, f32);
|
||||||
fn calcMaxPairwiseDiffNew( a : Vec4, b : Vec4) f32 {
|
fn calcMaxPairwiseDiffNew(a: Vec4, b: Vec4) f32 {
|
||||||
- const abs_diff_vec = ???;
|
- const abs_diff_vec = ???;
|
||||||
- const max_diff = @reduce(???, abs_diff_vec);
|
- const max_diff = @reduce(???, abs_diff_vec);
|
||||||
+ const abs_diff_vec = @abs( a - b );
|
+ const abs_diff_vec = @abs(a - b);
|
||||||
+ const max_diff = @reduce(.Max, abs_diff_vec);
|
+ const max_diff = @reduce(.Max, abs_diff_vec);
|
||||||
return max_diff;
|
return max_diff;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue