remove_paren_JPH {lazy.symbolic}R Documentation

式から冗長な括弧を除去

Description

英語のヘルプファイルは: remove_paren

Arguments

expr

式または文字列

debug

= 1 の場合、中間結果を表示

Value

文字列

Examples


expr="A%*%(t(B)%*%(diag(C+D))%*%E)"
remove_paren(expr)
expr="E+(diag(F)%*%(G%*%(H-I+(t(J)-K-L))+(M*M))+diag(N))"
remove_paren(expr)

## Not run: 
set.seed(1701)
nexpr <- 10
for( i in 1:nexpr ){

  cat("."); if( i%%100 == 0 ) cat("\n")

  # 元の式
  expr1 <- gen_random_expr(natom=8, nparen=3, nparen2=3,
         func=c("t","Diag"), pfunc=.5,
         alpha=LETTERS[c(1:3,5:9)], oper=c("%*%","+","-"))

  # remove_paren による変換
  expr2 <- remove_paren(expr1)
  # 古い Expand による変換
  expr3 <- Expand(expr1, all=1)

  # drop_parens による変換
  expr12 <- safe_deparse(drop_parens(expr1, all=TRUE, in_biop=TRUE))

  printm(expr12, expr2, expr3)

  # 数値的確認
  An <- demomat(2,2)
  Bn <- demomat(2,2)+1
  Cn <- demomat(2,2)+2
  Dn <- demomat(2,2)+3
  En <- demomat(2,2)+4
  Fn <- demomat(2,2)+5
  Gn <- demomat(2,2)+6
  Hn <- demomat(2,2)+7
  In <- diag(2)

  values="A=An; B=Bn; C=Cn; D=Dn; E=En; F=Fn; G=Gn; H=Hn; I=In"

  ee1 <- Eval(expr1, values=values, fullsymb=1)
  ee2 <- Eval(expr2, values=values, fullsymb=1)
  ee12 <- Eval(expr12, values=values, fullsymb=1)
  ee3 <- Eval(expr3, values=values, fullsymb=1)

  # エラーがあった場合のみ表示
  MAD12 <- max(abs(ee1-ee2))
  MAD112 <- max(abs(ee1-ee12))
  MAD13 <- max(abs(ee1-ee3))
  if( MAD12 > 1e-5 | MAD112 > 1e-5 | MAD13 > 1e-5 ){
    printm(expr1, expr12, expr3, MAD12, MAD112, MAD13)
  }
}
cat("\n")

## End(Not run)


[Package lazy.symbolic version 1.0.0.20250830 ]