#include <iostream>
#include <malloc.h>
using namespace std;
float *a_array[99999],*b_array[99999];
float** native_mm(int size, float *a, float *b)
{
for(int index=0;index<size;index++){
a_array[index]=a+index*size;
}
for(int index=0;index<size;index++){
b_array[index]=b+index;
}
float *temp=new float[size];
float *p=a_array[0];
int temp_index=0;
int flat;
int count=0;
for(int index=0,flat=1;flat<=(size*size*size);index++,flat++){
if(index==3){
index=0;
p=a_array[flat/(size*size)];
temp_index++;
if(temp_index==3){
// a_array[0]=temp;
temp_index=0;
temp=new float[size];
}
}
temp[temp_index]+=*p*(*(b_array[temp_index]+index*size));
if(flat%(size*size)==0){
a_array[flat/(size*size)-1]=temp;
}
p++;
}
return a_array;
}
int main()
{
float *A, *B;
int N=3;
//随机数种子
//srand48(100);
A = (float *)malloc(N*N*sizeof(float));
B = (float *)malloc(N*N*sizeof(float));
for (int i=0; i<N*N; ++i) {
A[i] = i;
B[i] = i;
}
cout<<"打印原来的矩阵" <<endl;
for(int index=0;index<N;index++){
for(int n_index=0;n_index<N;n_index++){
if(n_index==N-1){
cout<<*(A+index*N+n_index)<<"|"<<endl;
}else if(n_index==0){
cout<<"|"<<*(A+index*N+n_index)<<",";
}else{
cout<<*(A+index*N+n_index)<<",";
}
}
}
float **a=native_mm(N, B, A);
cout<<"结果矩阵"<<endl;
for(int index=0;index<N;index++){
for(int n_index=0;n_index<N;n_index++){
if(n_index==N-1){
cout<<*(a[index]+n_index)<<"|"<<endl;
}else if(n_index==0){
cout<<"|"<<*(a[index]+n_index)<<",";
}else{
cout<<*(a[index]+n_index)<<",";
}
}
}
return 0;
}
欢迎加群:854228077。
帮助更多java程序员提升技术!资料多,大佬多!