sgemm Fortran实现源码

sgemm Fortran____实现源码

*
 * -- Reference BLAS level3 routine (version 3.7.0) --
 * -- Reference BLAS is a software package provided by Univ. of Tennessee, --
 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
 * December 2016
 *
 * .. Scalar Arguments ..
  REAL ALPHA,BETA
  INTEGER K,LDA,LDB,LDC,M,N
  CHARACTER TRANSA,TRANSB
 * ..
 * .. Array Arguments ..
  REAL A(LDA,*),B(LDB,*),C(LDC,*)
 * ..
 *
 * =====================================================================
 *
 * .. External Functions ..
  LOGICAL LSAME
  EXTERNAL lsame
 * ..
 * .. External Subroutines ..
  EXTERNAL xerbla
 * ..
 * .. Intrinsic Functions ..
  INTRINSIC max
 * ..
 * .. Local Scalars ..
  REAL TEMP
  INTEGER I,INFO,J,L,NCOLA,NROWA,NROWB
  LOGICAL NOTA,NOTB
 * ..
 * .. Parameters ..
  REAL ONE,ZERO
  parameter(one=1.0e+0,zero=0.0e+0)
 * ..
 *
 * Set NOTA and NOTB as true if A and B respectively are not
 * transposed and set NROWA, NCOLA and NROWB as the number of rows
 * and columns of A and the number of rows of B respectively.
 *
  nota = lsame(transa,'N')
  notb = lsame(transb,'N')
  IF (nota) THEN
  nrowa = m
  ncola = k
  ELSE
  nrowa = k
  ncola = m
  END IF
  IF (notb) THEN
  nrowb = k
  ELSE
  nrowb = n
  END IF
 *
 * Test the input parameters.
 *
  info = 0
  IF ((.NOT.nota) .AND. (.NOT.lsame(transa,'C')) .AND.
  + (.NOT.lsame(transa,'T'))) THEN
  info = 1
  ELSE IF ((.NOT.notb) .AND. (.NOT.lsame(transb,'C')) .AND.
  + (.NOT.lsame(transb,'T'))) THEN
  info = 2
  ELSE IF (m.LT.0) THEN
  info = 3
  ELSE IF (n.LT.0) THEN
  info = 4
  ELSE IF (k.LT.0) THEN
  info = 5
  ELSE IF (lda.LT.max(1,nrowa)) THEN
  info = 8
  ELSE IF (ldb.LT.max(1,nrowb)) THEN
  info = 10
  ELSE IF (ldc.LT.max(1,m)) THEN
  info = 13
  END IF
  IF (info.NE.0) THEN
  CALL xerbla('SGEMM ',info)
  RETURN
  END IF
 *
 * Quick return if possible.
 *
  IF ((m.EQ.0) .OR. (n.EQ.0) .OR.
  + (((alpha.EQ.zero).OR. (k.EQ.0)).AND. (beta.EQ.one))) RETURN
 *
 * And if alpha.eq.zero.
 *
  IF (alpha.EQ.zero) THEN
  IF (beta.EQ.zero) THEN
  DO 20 j = 1,n
  DO 10 i = 1,m
  c(i,j) = zero
  10 CONTINUE
  20 CONTINUE
  ELSE
  DO 40 j = 1,n
  DO 30 i = 1,m
  c(i,j) = beta*c(i,j)
  30 CONTINUE
  40 CONTINUE
  END IF
  RETURN
  END IF
 *
 * Start the operations.
 *
  IF (notb) THEN
  IF (nota) THEN
 *
 * Form C := alpha*A*B + beta*C.
 *
  DO 90 j = 1,n
  IF (beta.EQ.zero) THEN
  DO 50 i = 1,m
  c(i,j) = zero
  50 CONTINUE
  ELSE IF (beta.NE.one) THEN
  DO 60 i = 1,m
  c(i,j) = beta*c(i,j)
  60 CONTINUE
  END IF
  DO 80 l = 1,k
  temp = alpha*b(l,j)
  DO 70 i = 1,m
  c(i,j) = c(i,j) + temp*a(i,l)
  70 CONTINUE
  80 CONTINUE
  90 CONTINUE
  ELSE
 *
 * Form C := alpha*A**T*B + beta*C
 *
  DO 120 j = 1,n
  DO 110 i = 1,m
  temp = zero
  DO 100 l = 1,k
  temp = temp + a(l,i)*b(l,j)
  100 CONTINUE
  IF (beta.EQ.zero) THEN
  c(i,j) = alpha*temp
  ELSE
  c(i,j) = alpha*temp + beta*c(i,j)
  END IF
  110 CONTINUE
  120 CONTINUE
  END IF
  ELSE
  IF (nota) THEN
 *
 * Form C := alpha*A*B**T + beta*C
 *
  DO 170 j = 1,n
  IF (beta.EQ.zero) THEN
  DO 130 i = 1,m
  c(i,j) = zero
  130 CONTINUE
  ELSE IF (beta.NE.one) THEN
  DO 140 i = 1,m
  c(i,j) = beta*c(i,j)
  140 CONTINUE
  END IF
  DO 160 l = 1,k
  temp = alpha*b(j,l)
  DO 150 i = 1,m
  c(i,j) = c(i,j) + temp*a(i,l)
  150 CONTINUE
  160 CONTINUE
  170 CONTINUE
  ELSE
 *
 * Form C := alpha*A**T*B**T + beta*C
 *
  DO 200 j = 1,n
  DO 190 i = 1,m
  temp = zero
  DO 180 l = 1,k
  temp = temp + a(l,i)*b(j,l)
  180 CONTINUE
  IF (beta.EQ.zero) THEN
  c(i,j) = alpha*temp
  ELSE
  c(i,j) = alpha*temp + beta*c(i,j)
  END IF
  190 CONTINUE
  200 CONTINUE
  END IF
  END IF
 *
  RETURN
 *
 * End of SGEMM .
 *


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值