Simd

simd.png
static matrix_float4x4 scalematrix(const float x, const float y, const float z)
{
    matrix_float4x4 m = {
        .columns[0] = { x, 0.0f, 0.0f, 0.0f },
        .columns[1] = { 0.0f, y, 0.0f, 0.0f },
        .columns[2] = { 0.0f, 0.0f, z, 0.0f },
        .columns[3] = { 0.0f, 0.0f, 0.0f, 1.0f }
    };
 
    return m;
}

遭遇したエラー

use of undeclared identifier 'simd'

#import <simd/simd.h>

って書いたのになんで。。!?焦りました。
ファイルの拡張子が.mだとただのC言語なのでダメだそうです。
simd::float4x4を使うためにはファイルの拡張子を*.mm**にしてC++を使えるようにしないといけない。
.cと.cppの違いみたいなものだね
また、

.mファイルの場合のsimd

#import <Foundation/Foundation.h>
@import simd;
+ (void) print:(NSString*) title matrix: (const matrix_float4x4)_matrix{
    NSMutableString *str= [NSMutableString stringWithString:title];
    [str appendString:@":\n"];
    for (int column = 0; column < 4; column++) {
        [str appendFormat:@"[%f,%f,%f,%f]\n",_matrix.columns[0][column],_matrix.columns[1][column],_matrix.columns[2][column],_matrix.columns[3][column]];
        [str appendString:@""];
    }
 
    NSLog(@"%@",str);
}

matrix_float4x4が使える様子

matrix

サポートサイト Wikidot.com matrix