?? calculate.cs
字號:
?using System;
using System.Threading;
namespace Engineer2008.Martrix
{
internal class Calculate
{
#region MATT A[M,N]->B[N,M]
public static void MATT(int M, int N, double[,] A, double[,] B)
{
int I, J; for (I = 0; I < M; I++) for (J = 0; J < N; J++) B[J, I] = A[I, J];
}
public static void ParallelMATT(int M, int N, double[,] A, double[,] B)
{
int J; Parallel.For(0, M, I => { for (J = 0; J < N; J++) B[J, I] = A[I, J]; });
}
#endregion
#region MATMUL A[M,N]*B[N]=C[M]
public static void MATMUL(int M, int N, double[,] A, double[] B, double[] C)
{
int I, J; for (I = 0; I < M; I++) { C[I] = 0; for (J = 0; J < N; J++)C[I] += A[I, J] * B[J]; }
}
public static void ParallelMATMUL(int M, int N, double[,] A, double[] B, double[] C)
{
int J; Parallel.For(0, M, I => { C[I] = 0; for (J = 0; J < N; J++)C[I] += A[I, J] * B[J]; });
}
#endregion
#region TMATMUL A[M,N]*B[M]=C[N](用A的轉值乘以B)
public static void TMATMUL(int M, int N, double[,] A, double[] B, double[] C)
{
int I, J; for (I = 0; I < N; I++) { C[I] = 0; for (J = 0; J < M; J++)C[I] += A[J, I] * B[J]; }
}
public static void ParallelTMATMUL(int M, int N, double[,] A, double[] B, double[] C)
{
int J; Parallel.For(0, N, I => { C[I] = 0; for (J = 0; J < M; J++)C[I] += A[J, I] * B[J]; });
}
#endregion
#region MATMUL A[M][N]*B[N][L]=C[M,L]
public static void MATMUL(int M, int N, int L, double[,] A, double[,] B, double[,] C)
{
int I, J, K; for (K = 0; K < L; K++) for (I = 0; I < M; I++) { C[I, K] = 0.0; for (J = 0; J < N; J++) C[I, K] += A[I, J] * B[J, K]; }
}
public static void ParallelMATMUL(int M, int N, int L, double[,] A, double[,] B, double[,] C)
{
int I, J; Parallel.For(0, L, K => { for (I = 0; I < M; I++) { C[I, K] = 0.0; for (J = 0; J < N; J++) C[I, K] += A[I, J] * B[J, K]; } });
}
public static void Parallel2MATMUL(int M, int N, int L, double[,] A, double[,] B, double[,] C)
{
int J; Parallel.For(0, L, K => { Parallel.For(0, M, I => { C[I, K] = 0.0; for (J = 0; J < N; J++) C[I, K] += A[I, J] * B[J, K]; }); });
}
#endregion
#region TMATMUL A[M][N]*B[M][L]=C[N,L] (用A的轉值乘以B)
public static void TMATMUL(int M, int N, int L, double[,] A, double[,] B, ref double[,] C)
{
int I, J, K; for (K = 0; K < L; K++) for (I = 0; I < N; I++) { C[I, K] = 0.0; for (J = 0; J < M; J++) C[I, K] += A[J, I] * B[J, K]; }
}
public static void ParallelTMATMUL(int M, int N, int L, double[,] A, double[,] B, double[,] C)
{
int I, J; Parallel.For(0, L, K => { for (I = 0; I < N; I++) { C[I, K] = 0.0; for (J = 0; J < M; J++) C[I, K] += A[J, I] * B[J, K]; } });
}
public static void Parallel2TMATMUL(int M, int N, int L, double[,] A, double[,] B,double[,] C)
{
int J; Parallel.For(0, L, K => { Parallel.For(0, N, I => { C[I, K] = 0.0; for (J = 0; J < M; J++) C[I, K] += A[J, I] * B[J, K]; }); });
}
#endregion
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -