Migration Assistant Toolbox Guide
Migration Assistant Toolbox Guide
• The Mathcad Migra=on Assistant Toolbox, which partly converts Mathcad 13, 14 & 15 worksheets to Maple Flow
worksheets. You'll learn about what the Mathcad Migra=on Assistant does and what it doesn't do.
• Tips for implemen=ng non-migrated content in Maple Flow.
• How you can make your calcula=ons more elegant using advanced Maple Flow techniques.
• The differences between Mathcad 15 and Maple Flow.
The goal of using the Migra=on Assistant with the =ps in this guide and MaplesoO's support services is to make the move
from Mathcad to Maple Flow as smooth as possible, but transi=oning soOware comes with challenges. Mathcad and Maple
Flow, while sharing some design features, have different keystrokes, equa=on editors, syntax, command libraries,
computa=onal models and interface features.
Before star=ng to translate your Mathcad worksheets, we recommend learning how to use Maple Flow to address any
computa=onal issues aOer migra=on. Please go through the Maple Flow User Manual to learn more about the following
topics:
|1
Table of Contents
Introduction ..................................................................................................................................................1
Translation Tips for Mathcad Content Not Supported by the Migration Assistant or Maple Flow ....................... 14
Range Variables............................................................................................................................................... 14
Plots ............................................................................................................................................................... 17
Programming Blocks ........................................................................................................................................ 18
Global Definitions ............................................................................................................................................ 18
Embedded Excel Spreadsheets ........................................................................................................................ 18
Miscellaneous ................................................................................................................................................. 19
|2
What is the Mathcad Migra)on Assistant
The Mathcad Migra=on Assistant creates Maple Flow worksheets based on the content of Mathcad 15 worksheets (it also
works with Mathcad 13 and 14 worksheets). The math and documenta=on in the Mathcad worksheet is moved over to the
Maple Flow worksheet, with some transla=on of syntax and commands during the migra=on process.
• For simpler Mathcad worksheets, you should get a Maple Flow worksheet that executes as expected, giving the
same results and looking roughly similar. Some modifica=on of the layout may be needed.
• For Mathcad worksheets that use features or commands that are unsupported in Maple Flow and/or the Migra=on
Assistant, you will need to modify the converted Maple Flow worksheet for it to execute as expected.
Please read the details below to ensure you understand the capabili=es and limita=ons of the Migra=on Assistant.
Then click on Convert to migrate the Mathcad worksheet(s) to Maple Flow files. For each Mathcad worksheet, a Maple
Flow worksheet is generated in the same folder, with the same file name but with a .flow extension.
|3
• Images
• Page breaks
• Background color for text and math
• Sec=ons
However, some manual reposi=oning may be needed. Bear in mind that Mathcad and Maple Flow have different grid
spacing (i.e. the grid to which math and text snaps), so the Migra=on Assistant Toolbox may not preserve the exact rela=ve
posi=oning of math and text.
General Math
The Mathcad Migra=on Assistant a]empts to preserve the layout, typese`ng and execu=on proper=es of math (within the
boundaries of the math that is supported). This table presents a comparison of how math is migrated, together with
relevant notes.
Mathcad concept Comment Example in Mathcad 15 Maple Flow transla:on
|4
however, protected names in
Maple Flow and cannot be
overwri]en. During
migra=on, these are
converted to D1, g1, Re1 and
length1 in Maple Flow (or
sequen=ally numbered if D1,
g1 and Re1 already exist)
Units Mathcad assumes that units and
variables exist in the same name
space. Maple Flow dis=nguishes
between name spaces for units
(which are entered in a units
placeholder) and variables.
Iterated addi=on
and mul=plica=on
|5
Complex numbers,
including conjugate
and argument
Matrices and
Vectors
Matrix/vector In Mathcad,
indexing and
redefini=on of • matrices/vectors are
ORIGIN indexed with a subscript
entered with a leO square
bracket (]).
• the default origin is a
row index of 0 and
column index of 0.
• the origin can be
manually altered by
defining the variable
ORIGIN
In Maple Flow,
• matrices/vectors are
indexed with square
brackets.
• the origin is a row index
of 1 and column index of
1, and cannot be
manually changed by
the user.
• During conversion, if
needed, ORIGIN is defined
and used in the index to
shiO the origin back to 1,1.
|6
Matrix column
Matrix/vect or
transpose
|7
Strings
Bi(z) AiryBi(z)
ceil(x) ceil(x)
Ceil(z,y) Ceil(z,y)
cols(M) upperbound(M,2)
cond1(M) LinearAlgebra:- Condi=onNumber(M,1)
|8
Mathcad Func=on Maple Flow Func=on
DAi(z) AiryAi(1, z)
DBi(z) AiryBi(1, z)
dbeta(x,nu,omega) Sta=s=cs:-PDF (BetaDistribu=on(nu,omega), x)
dbinom(x,n,q) Sta=s=cs:-PDF(Binomial(n,q), x)
dcauchy(x,l,s) Sta=s=cs:-PDF(Cauchy(l,s), x)
dchisq(x,d) Sta=s=cs:-PDF(ChiSquare(d),x)
dexp(x,r) Sta=s=cs:-PDF(Exponen=al(r), x)
dF(x,d1,d2) Sta=s=cs:-PDF(FRa=o(d1,d2), x)
dgamma(x,s) Sta=s=cs:-PDF(Gamma(1,s), x)
dgeom(x,q) Sta=s=cs:-PDF(Geometric(q), x)
diag(V) LinearAlgebra:-DiagonalMatrix(V)
dlogis(x,l,s) Sta=s=cs:-PDF(Logis=c(l,s), x)
dpois(x,lambda) Sta=s=cs:-PDF(Poisson(lambda), x)
dt(x,nu) Sta=s=cs:-PDF(StudentT(nu), x)
dunif(x,a,b) Sta=s=cs:-PDF(Uniform(a,b), x)
dweibull(x,s) Sta=s=cs:-PDF(Weibull(1,s), x)
eigenvals(M) LinearAlgebra:-Eigenvalues(M)
eigenvecs(M) LineraAlgebra:-Eigenvectors(M)[2]
u(data) SignalProcessing:-FFT(data)[1..upperbound(data)/2+1]
floor(x) floor(x)
Floor(z,y) Floor(z,y)
genvals(M,N) LinearAlgebra:-Eigenvalues(M, N)
genvecs(M,N) LinearAlgebra:-Eigenvectors(M, N)[2]
gmean(data) Sta=s=cs:-GeometricMean([data])
H1(m, z) HankelH1(m, z)
|9
H2(m, z) HankelH2(m, z)
hmean(data) Sta=s=cs:-HarmonicMean([data])
hlookup(z,A,r) ArrayTools:-Lookup(z,A,row,1,r+1)
I0(z) BesselI(0,z)
I1(z) BesselI(1,z)
iden=ty(x) LinearAlgebra:-Iden=tyMatrix(x)
iu(data) SignalProcessing:-InverseFFT(ArrayTools:-Concatenate(1,
data, conjugate(ArrayTools:-Reverse(data[2 .. -2]))))
In(m,z) BesselI(z)
intercept(X,Y) coeff(CurveFi`ng:-LeastSquares(X,Y,x),x,0)
IsArray(t) type(t,rtable)
IsFunc=on(t) type(t,procedure)
IsNaN(t) type(t,undefined)
IsScalar(t) type(t,constant)
IsString(t) type(t,string)
J0(z) BesselJ(0,z)
J1(z) BesselJ(1,z)
Jn(m,z) BesselJ(z)
K0(z) BesselK(0,z)
K1(z) BesselK(1,z)
Kn(m,z) BesselK(z)
kurt(data) Sta=s=cs:-Kurtosis([data])
last(data) data[-1]
length(data) numelems(data)
lsolve(M,v) LinearAlgebra:-LinearSolve(M,v)
var(data) Sta=s=cs:-Variance(data) * (1-1/numelems(data))
lu(M) ArrayTools:-Concatenate(2,LinearAlgebra:-
LUDecomposi=on(M,method=GaussianElimina=on))
matrix(i,j,p) Matrix(i,j,(i,j)->p(i-1,j-1))
mean(data) Sta=s=cs:-Mean([data])
median(data) Sta=s=cs:-Median([data])
mode(data) Sta=s=cs:-Mode([data])
norm1(M) LinearAlgebra:-Norm(M,1)
norm2(M) LinearAlgebra:-Norm(M,2)
|10
norme(M) LinearAlgebra:-Norm(M,Euclidean)
normi(M) LinearAlgebra:-Norm(M,infinity)
pbeta(x,nu,omega) Sta=s=cs:-CDF(BetaDistribu=on(nu,omega),x)
pbinom(x,n,q) Sta=s=cs:-CDF(Binomial(n,q), x)
pcauchy(x,l,s) Sta=s=cs:-CDF(Cauchy(l,s), x)
pchisq(x,d) Sta=s=cs:-CDF(ChiSquare(d), x)
pexp(x,r) Sta=s=cs:-CDF(Exponen=al(r), x)
pF(x,d1,d2) Sta=s=cs:-CDF(FRa=o(d1,d2), x)
pgamma(x,s) Sta=s=cs:-CDF(Gamma(1,s), x)
pgeom(x,q) Sta=s=cs:-CDF(Geometric(q), x)
plogis(x,l,s) Sta=s=cs:-CDF(Logis=c(l,s), x)
pnbinom(x,n,q) Sta=s=cs:-CDF(Nega=veBinomial(n,q), x)
ppois(x,lambda) Sta=s=cs:-CDF(Poisson(lambda), x)
pt(x,nu) Sta=s=cs:-CDF(StudentT(nu), x)
punif(x,a,b) Sta=s=cs:-CDF(Uniform(a,b), x)
pweibull(x,s) Sta=s=cs:-CDF(Weibull(1,s), x)
qbeta(x,nu,omega) Sta=s=cs:-Quan=le(BetaDistribu=on(nu,omega),x)
qbinom(x,n,q) Sta=s=cs:-Quan=le(Binomial(n,q), x)
qcauchy(x,l,s) Sta=s=cs:-Quan=le(Cauchy(l,s), x)
qchisq(x,d) Sta=s=cs:-Quan=le(ChiSquare(d), x)
qexp(x,r) Sta=s=cs:-Quan=le(Exponen=al(r), x)
qF(x,d1,d2) Sta=s=cs:-Quan=le(FRa=o(d1,d2), x)
qgamma(x,s) Sta=s=cs:-Quan=le(Gamma(1,s), x)
qgeom(x,q) Sta=s=cs:-Quan=le(Geometric(q), x)
qlnorm(x,mu,sigma) Sta=s=cs:-Quan=le(LogNormal(xu, sigma), x)
qlogis(x,l,s) Sta=s=cs:-Quan=le(Logis=c(l,s), x)
qnbinom(x,n,q) Sta=s=cs:-Quan=le(Nega=veBinomial(n,q), x)
qpois(x,lambda) Sta=s=cs:-Quan=le(Poisson(lambda), x)
qr(M) ArrayTools:-Concatenate(2,LinearAlgebra:-
QRDecomposi=on(M)
|11
qt(x,nu) Sta=s=cs:-Quan=le(StudentT(nu), x)
qunif(x,a,b) Sta=s=cs:-Quan=le(Uniform(a,b), x)
qweibull(x,s) Sta=s=cs:-Quan=le(Weibull(1,s), x)
rank(M) LinearAlgebra:-Rank(M)
rbeta(N,nu,omega) Sta=s=cs:-Sample(BetaDistribu=on(nu,omega), N)
rbinom(m,n,q) Sta=s=cs:-Sample(Binomial(n,q), m)
rcauchy(N,l,s) Sta=s=cs:-Sample(Cauchy(l,s), N)
rchisq(m,d) Sta=s=cs:-Sample(ChiSquare(d), m)
READPRN(file) ImportMatrix(file)
reverse(M) ArrayTools:-Reverse(M)
rexp(m,r) Sta=s=cs:-Sample(Exponen=al(r), m)
rF(m,d1,d2) Sta=s=cs:-Sample(FRa=o(d1,d2), m)
rgamma(N,s) Sta=s=cs:-Sample(Gamma(1,s), N)
rgeom(m,q) Sta=s=cs:-Sample(Geometric(q), m)
rhypergeom(m,a,b,n) Sta=s=cs:-Sample(HyperGeometric(a,b,n), m)
rlnorm(m,mu,sigma) Sta=s=cs:-Sample(LogNormal(mu, sigma), m)
rlogis(m,l,s) Sta=s=cs:-Sample(Logis=c(l,s), m)
rnbinom(m,n,q) Sta=s=cs:-Sample(Nega=veBinomial(n,q), m)
round(x) round(x)
Round(z,y) Round(z,y)
rows(M) upperbound(M,1)
rpois(m,lambda) Sta=s=cs:-Sample(Poisson(lambda), m)
rsort(M,n) ArrayTools:-SortBy(M,row,n+1)
rt(m,nu) Sta=s=cs:-Sample(StudentT(nu), m)
runif(m,a,b) Sta=s=cs:-Sample(Uniform(a,b), m)
rweibull(m,s) Sta=s=cs:-Sample(Weibull(1,s), m)
skew(data) Sta=s=cs:-Skewness([data])
slope(X,Y) coeff(CurveFi`ng:-LeastSquares(X,Y,x),x)
sort(V) sort(V)
stack(M1,M2,...) ArrayTools:-Concatenate(1,M1,M2,...)
|12
stdev(data) Sta=s=cs:-StandardDevia=on(data) * sqrt(1-
1/numelems(data))
Stdev(data) Sta=s=cs:-StandardDevia=on(data)
submatrix(M,r1,r2,c1,c2) M[r1+1..r2+1,c1+1..c2+1]
tr(M) LinearAlgebra:-Trace(M)
trunc(x) trunc(x)
Trunc(z,y) Trunc(z,y)
var(data) Sta=s=cs:-Variance(data) * (1-1/numelems(data))
Var(data) Sta=s=cs:-Variance(data)
vlookup(z,A,c) ArrayTools:-Lookup(z,A,column,1,c+1)
WRITEPRN(file,data) ExportMatrix(file,data)
Y0(z) BesselY(0,z)
Y1(z) BesselY(1,z)
Yn(m,z) BesselY(z)
acos(x) arccos(x)
arg(x) argument(x)
asin(x) arcsin(x)
atan(x) arctan(x)
concat(x) cat(x)
cos(x) cos(x)
cosh(x) cosh(x)
cot(x) cot(x)
csc(x) csc(x)
FresnelC(x) FresnelC(x)
FresnelS(x) FresnelS(x)
if(arg1,arg2,arg3) ifelse(arg1,arg2,arg3)
log(x) log10(x)
erf(x) erf(x)
erfc(x) erfc(x)
exp(x) exp(x)
sec(x) sec(x)
sin(x) sin(x)
sinh(x) sinh(x)
|13
tan(x) tan(x)
tanh(x) tanh(x)
Range Variables
These have no direct representa=on in Maple Flow. They are converted to Vectors, which may or may not be appropriate,
given the context.
Mathcad example of crea=ng and filling matrices with range Maple Flow manual transla=on
variables (nth element independent on any prior elements)
Crea&ng and Filling Vectors/Matrices - if the nth element is dependent on the value of
prior elements
You will need to use a Maple procedure, defined in the Edit > Code window.
Mathcad example of crea=ng and filling a vector with range Maple Flow manual transla=on
variables (nth element dependent on prior elements)
|14
Procedure defi ned in Edit > Code:
|15
|16
Plots
The Migra=on Assistant converts Mathcad plots to sta=c images. You can use Maple Flow plo`ng commands to recreate
your live plots.
Maple Flow has a flexible plo`ng language, and plots can be extensively customized - please refer to the documenta=on
for more assistance. These are a few sample Mathcad plots and their Maple Flow equivalents.
|17
Programming Blocks
The only Mathcad programming blocks supported by the Migra=on Assistant and Maple Flow (for in-worksheet conversion)
are those that contain mul=-line if/otherwise statements with no other programming statements.
More complex Mathcad programs (as long as they are implemented as func=ons with parameters) can be converted to
Maple-language based procedures in the Edit > Code window in Maple Flow. These procedures can then be called on the
worksheet.
Global Defini*ons
Global defini=ons are converted to local defini=ons. You will need to move the local defini=ons to the appropriate point or
modify your worksheet for it to execute as expected.
|18
Arrange and evaluate variables in a tabular format
Miscellaneous
• Page size, orienta=on, margins and headers/footers are not migrated; these will have to be specified manually.
• Live math in text is not supported in Flow and is ignored.
• Mixed alignment in text is not supported in Flow and is ignored.
• Mathcad UI components such as bu]ons, sliders and combo boxes are converted into images (these are on the
roadmap for a future version)
|19
Using Higher Level Maple Func)onality to Simplify your Work
A one-to-one conversion from Mathcad to Maple Flow may not always be the op=mal approach; you may be able to
simplify your work by replacing several Mathcad opera=ons with fewer higher-level Maple Flow func=on calls. The
Mathcad Migra=on Assistant cannot see the context of the en=re applica=on; and so manual modifica=on is needed.
|20
Fi@ng a Linear Equa:on to Data
Thermophysical Data
In Mathcad, users enter thermophysical data by implemen=ng equa=ons of state or polynomial correla=ons, or impor=ng
tabular data and interpola=ng.
Mathcad 15
Maple Flow
|21
Mathcad uses hardware floa=ng point Internal calcula=ons to 17 decimal Calcula=ons can be up to thousands of
arithme=c (IEEE 754 double precision) places. decimal places, if requested and on a
for numeric calcula=ons. case-by-case basis
Apart from the standard Windows Square root symbol is entered with \ or Square root symbol is entered with sqrt
shortcuts for cut/copy/paste etc, via the Calculator toolbar followed by Command Comple=on, or
keystrokes and equa=on edi=ng are
via the pale]e
different.
For example,
square roots are entered differently
|22
The mathema=cal compu=ng language
is different. For example,
Mathcad has the concept of range
variables, which are not present in Flow.
Text is ini=ated differently You start typing, and the math turns Press space to insert an empty text
into text at the first space container, and then type your text
Units are entered differently Units exist as pre-defined variables at Units entered in a units placeholder (via
the top-level and are typed in like any Ctrl + Space + U) or via the Context
other variable Panel, and exist in a separate
namespace
www.mapleso*.com | info@mapleso*.com
Toll-free: (US & Canada) 1-800-267-6583 | Direct:1-519-747-2373
© Mapleso*, a division of Waterloo Maple Inc., 2025. Mapleso*, Maple, and Maple Flow are trademarks of Waterloo Maple Inc. Mathcad is a registered trademark of
PTC Inc. or its subsidiaries in the U.S. and in other countries. Excel is a registered trademark of Microso* CorporaIon. MATLAB is a registered trademarks of The
MathWorks, Inc. All other trademarks are the property of their respecIve owners. So*ware version Maple Flow 2025.0
|23