July 12th, 2013 | Categories: GPU, Science | Tags:

One of my academic colleagues, Fumie Costen, recently asked members of The University of Manchester GPU Club the following question

‘I am looking for a journal with high impact factor where I can publish our work on GPU for FDTD computations.  Can anyone help?’

So far, we haven’t had any replies so I’m throwing the question open to the world.  Any suggestions?

July 11th, 2013 | Categories: R | Tags:

I was recently working with someone who was running thousands of R jobs on our Condor pool and some of them were failing.  As part of the diagnostic process, we needed to determine which machines in the pool were causing the problem.  My solution was to add the line

hostname

To the Bash script that eventually called R and the program he was running. This gives output that looks like this

badmachine.ourdomain.ac.uk

His solution was to do exactly the same thing in R. To do this, he added the following line to the beginning of his R script

(Sys.info()["nodename"])

Which produces output that looks like

nodename
"badmachine.ourdomain.ac.uk"

Either way, the job was done.

July 2nd, 2013 | Categories: Month of Math Software | Tags:

Welcome to my monthly round-up of news from the world of mathematical software.  As always, thanks to all contributors.  If you have any mathematical software news (releases, blog articles and son on), feel free to contact me.  For details on how to follow Walking Randomly now that Google Reader has died, see this post.

Numerics for .NET

Faster, faster, FASTER!

Sparsification

  • Version 1.0 of TxSSA has been released.  According to the project’s website, “TxSSA is an acronym for Tech-X Corporation Sparse Spectral Approximation. It is a library that has interfaces in C++, C, and MATLAB. It is an implementation of a matrix sparsification algorithm that takes a general real or complex matrix as input and produces a sparse output matrix of the same size. The non-zero entries are chosen to minimize changes to the singular values and singular vectors corresponding to the near null-space. The output matrix is constrained to preserve left and right null-spaces exactly. The sparsity pattern of the output matrix is automatically determined or can be given as input.”

Data and Statistics

  • Stata is a commercial statistics package that’s been around since 1985.  It’s now at version 13 and has a bucket load of new functions and improvements.
  • A new minor release of IDL (Interactive Data Language) from Exelis Visual Information Solutions has been released.  Details of version 8.2.3 can be found here.

Molten Mathematics

Some Freebies

  • SMath studio is a free Mathcad clone developed by Andrey Ivashov.  Recently, Andrey has been releasing nee versions of Smath much more regularly and it is now at version 0.96.4909.  To see what’s been added in June, see the forum posts here and here.
  • Rene Grothmann’s very frequently updated Euler Math Toolbox is now at version 22.8.  As always, Rene’s detailed version log tells you what’s new.

Safe and reliable numerical computing

  • Sollya 4.0 was released earlier this month and is available for download at: http://sollya.gforge.inria.fr/.  According to the developers, “Sollya is both a tool environment and a library for safe floating-point code development. It offers a convenient way to perform computations with multiple precision interval arithmetic. It is particularly targeted to the automatized implementation of mathematical floating-point libraries (libm).”
  • The INTLAB toolbox for MATLAB is now at version 7.1. INTLAB is the MATLAB toolbox for reliable computing and self-validating algorithms.

Pythonic Mathematics

  • Version 5.10 of Sage, the free Computer Algebra System based on Python, was released on 17th June.  Martin Albrect discusses some of his favourite new goodies over at his blog and the full list of new stuff is on the Sage changelog.
  • Pandas is Python’s main data analysis library and version 0.12 is out.  Take a look at the newness here.
June 18th, 2013 | Categories: programming, python | Tags:

I was recently chatting to a research group who were considering moving to Python from MATLAB for some of their research software output.  One team member was very worried about Python’s use of indentation to denote blocks of code and wondered if braces would ever find their way into the language?  Another team member pointed out that this was extremely unlikely and invited us to attempt to import braces from the __future__ module.

>>> from __future__ import braces
  File "", line 1
SyntaxError: not a chance
June 2nd, 2013 | Categories: Month of Math Software | Tags:

Welcome to the latest Month of Math Software where I look back over May 2013 and pick out items of interest in the world of mathematical software.  As always, thanks to everyone who contributed news items this month– I couldn’t do these posts without you.  Feel free to contact me if you have any news you’d like to share in future editions.

Connecting MATLAB with Mathematica

  • MATLink is a free project that connects Mathematica with MATLAB.  If you are lucky enough to have both systems, you can now use them seamlessly together.  Version 1.0 was released in May.

Octave news

GNU Octave is an open source system for numerical computing that is broadly compatible with MATLAB.

  • Michael Goffioul has compiled and released GNU Octave 3.6.4 for Windows using Microsoft Visual Studio.  Michael’s builds are the ones I prefer to use on Windows systems.  The installer includes 82 packages from Octave Forge (Octave Forge packages are the Octave analogue of MATLAB Toolboxes).  It doesn’t appear to include the experimental Graphical User Interface that’s being worked on by the Octave team.
  • OctConf 2013 is a conference that brings together users and developers of Octave.  This year it is held in Milan and user registration is now open.  I sincerely wish I could attend but my personal life has gotten in the way!
  • Google’s Summer of Code (GSoC) awards stipends to students to work on various open source projects.  This year, Octave will have 9 students working under the auspices of this program.  Here are the detaills (The original source for this is at http://octave.1599824.n4.nabble.com/Welcome-GSoC-students-td4653374.html)
    • Ahsan Said will be working on the Agora website (http://agora.octave.org).  His mentor is Jordi Gutiérrez Hermoso
    • Vytautas Jančauskas will fix audio processing for Octave.  He will be mentored by Mike Miller.
    • Gedeone will implement a general purpose finite element method library. His mentor is Carlo de Falco.
    • Andrej Lojdl  wants to give Octave a native TeX rendering engine for plots. Patric Noffke is his mentor.
    • Carnë Draug needs to polish the Octave-Forge image processing package for his PhD thesis and make it handle N-dimensional images.  Jordi Gutiérrez Hermoso is mentoring.
    • Matheus Vieira Portela will produce a GUI for manipulating closed-loop systems and incorporate it into the control package. Doug Stewart is his mentor.
    • Riupeng Li will incorporate incomplete sparse LU and Cholesky factorisations. Mentors will be  Youssef Saad, originator of the ITSOL library  and Carlo de Falco.
    • Kai Torben Ohlhus will also coordinate with Riupeng and Carlo and work on other parts of the sparse LU and Cholesky factorisations. Nir Krakauer will be the Mentor.
    • LYH will continue Max Brister’s previous GSoC work for giving Octave a JIT compiler, and John Eaton will mentor him.

Numerical Algorithms Group

Maple’s 25th Birthday

Linear Algebra

Free Stuff

Optimization

  • CUTEst, the latest evolution of the constrained and unconstrained testing environment for numerical optimization by Nick Gould, Dominique Orban and Philippe Toint is now available at http://ccpforge.cse.rl.ac.uk/gf/project/cutest/wiki/ 
  • NOMAD is a blackbox optimisation software that’s just been updated to version 3.6

Finite Elements and PDEs

  • Wolfrgang Bangerth of Texas A&M University has recorded a set of lectures on various aspects of finite elements and scientific computing.  It has a focus on the deal.II library but also discusses more general scientific computing topics such as which preconditioners to use, adaptive mesh refinement, time dependent problems, parallel computing, using tools such as Visit, Paraview and Eclipse, debugging, etc.
  • PETSc version 3.4 was released in May.  PETSc is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations.  Notable new features include a system for managing unstructured grids with PDE solvers in DMPlex.  Capability and performance improvements to the algebraic multigrid preconditioners PCGAMG, many new nonlinear solvers in SNES, many improvements to the ODE solvers in TS including the new TSEIMEX, and support for parallel dense linear algebra using MatElemental.  The library also has better encapsulation and better control of symbols.

GPU Accelerated Mathematics

Statistics

  • A new version of RStudio, the free Integrated Development Environment, for R has been released.  Version 0.97.551 has got lots of new goodies.

 From the blogs

May 22nd, 2013 | Categories: Free software, programming, Science, Scientific Software | Tags:

Earlier this year I was awarded a fellowship from the software sustainability institute, an organization that works to improve all aspects of research software.  During their recent collaborations workshop in Oxford, it occurred to me that I was aware of only a relatively tiny number of software projects at my own institution, The University of Manchester. I decided to change that and started contacting our researchers to see what software they had released freely to the world as part of their research activities.

Research software comes in many forms; from small but useful MATLAB, Python or R scripts with just a handful of users and one developer right through to fully-fledged applications used by large communities of researchers and supported by teams of specialist developers.  I’m interested in knowing about all of it.  After all, we live in a time when even a mistake in an Excel spreadsheet can change the world.

The list below is what’s been sent to me so far and is a mirror of an internal list that’s been doing the rounds at Manchester.  I’ll update it as more information becomes available.  If you are at Manchester and know of a project that I’ve missed, feel free to contact me.

Last updated: 26th Jan 2015

Centre for Imaging Sciences

  • BoneFinder – BoneFinder is a fully automatic segmentation tool to extract bone contours from 2D radiographs. It is written in C++ and is available for Linux and Windows.

Faculty of Life Sciences

  • antiSMASH – Genome annotation tool for secondary metabolite gene clusters.
  • MultiMetEval – Flux-balance analysis tool for comparative and multi-objective analysis of genome-scale metabolic models.
  • mzMatch/mzmatch.R/mzMatch.ISO – Comprehensive LC/MS metabolomics data processing toolbox.
  • Rank Products – Statistical tool for the identification of differentially expressed entities in molecular profiles.

Health Informatics

  • openCDMS – The openCDMS project is a community effort to develop a robust, commercial-grade, full-featured and open source clinical data management system for studies and trials.

IT Services

  • idiffh – Research software can produce huge text files (e.g. logs). The GNU diff program needs to read the files into memory and therefore has an upper bound on file size. idiffh might only use a simple heuristic but is only bounded by the maximum file size (and free file store).
  • nearest_correlation – Python versions of nearest correlation matrix algorithms
  • ParaFEM – A portable library for parallel finite element analysis. Contributions from MACE, SEAES, School of Materials.
  • Shadow – This is an Apple Mac OS X shell level application that can monitor Dropbox shared folders for file deletions and restore them.
  • The Reality Grid Steering Library – A software library for steering and monitoring numerical simulations, APIs available for Fortran/C++/Java and steering clients available for installation on laptops and mobile devices.  Developed in collaboration with the School of computer science.

Manchester Institute of Biotechnology

  • Copasi – COPASI is a software application for simulation and analysis of biochemical networks and their dynamics.
  • Condor Copasi – Condor-COPASI is a web-based interface for integrating COPASI with the Condor High Throughput Computing (HTC) environment.

School of Chemical Engineering & Analytical Science

School of Chemistry

  • DOSY Toolbox – A free, open source programme for processing PFG NMR diffusion data (a.k.a. DOSY data).

School of Computer Science

  • Clinical NERC – Clinical NERC is a simple customizable state-of-the-art named entity recognition, and classification software for clinical concepts or entities.
  • EasyChair – EasyChair is a free conference management system.
  • GPC – The University of Manchester GPC library is a flexible and highly robust polygon set operations library for use with C, C#, Delphi, Java, Perl, Python, Haskell, Lua, VB.Net (and other) applications.
  • HiPLAR – High Performance Linear Algebra in R.  A collaboration between Manchester and Imperial.
  • iProver – 7 times word champion in theorem proving.
  • INSEE – Interconnection Networks Simulation and Evaluation Environment
  • KUPKB (The Kidney & Urinary Pathway Knowledge Base) – The KUPKB is a collection of omics datasets that have been extracted from scientific publications and other related renal databases. The iKUP browser provides a single point of entry for you to query and browse these datasets.
  • ManTIME – ManTIME is an open-source machine learning pipeline for the extraction of temporal expressions from general domain texts.
  • MethodBox – MethodBox provides a simple, easy to use environment for browsing and sharing surveys, methods and data.
  • myExperiment – myExperiment makes it easy to find, use and share scientific workflows and other Research Objects, and to build communities.
  • Open PHACTS Discovery Platform – Freely available, this platform integrates pharmacological data from a variety of information resources and provides tools and services to question this integrated data to support pharmacological research.
  • OWL API – A Java API and reference implementation for creating, manipulating and serialising OWL Ontologies. The latest version of the API is focused towards OWL 2. The OWL API is open source and is available under either the LGPL or Apache Licenses.
  • OWL Tools – a collection of tools for working with OWL ontologies
  • OWL Webapps – a collection of web apps for working with OWL ontologies
  • RightField – Semantic annotation by stealth. RightField is tool for adding ontology term selection to Excel spreadsheets to create templates which are then reused by Scientists to collect and annotate their data without any need to understand, or even be aware of, RightField or the ontologies used. Later the annotations can be collected as RDF
  • SEEK – SEEK is a web-based platform, with associated tools, for finding, sharing and exchanging Data, Models and Processes in Systems Biology.
  • ServiceCatalographer – ServiceCatalographer is an open-source Web-based platform for describing, annotating, searching and monitoring REST and SOAP Web services.
  • Simple Spreadsheet Extractor – A simple ruby gem that provides a facility to read an XLS or XLSX Excel spreadsheet document and produce an XML representation of its content.
  • Taverna – Taverna is an open source and domain-independent Workflow Management System – a suite of tools used to design and execute scientific workflows and aid in silico experimentation.
  • TERN – TERN is a temporal expressions identification and normalisation software; designed for clinical data.
  • Utopia Documents – Utopia Documents brings a fresh new perspective to reading the scientific literature, combining the convenience and reliability of the PDF with the flexibility and power of the web.

School of Earth, Atmospheric and Environmental Sciences

  • ManUniCast – iPad/iPhone app. Weather and Air-Quality Forecasts for the UK and Europe

School of Electrical and Electronic Engineering

  • Automatic classification of eye fixations – Identify fixations and saccades from point-of-gaze data without parametric assumptions or expert judgement. MATLAB code.
  • Bootstrap Threshold Software – Estimate a threshold and a robust SD from stimulus-response data with a normal cumulative distribution.  Written in C.
  • LDLTS – Laplace transform Transient Processor and Deep Level Spectroscopy.  A collaboration between Manchester and the Institute of Physics Polish Academy of Sciences in Warsaw
  • Model-Free Psychometric Function Software – Fit a stimulus-response curve and estimate a threshold and SD without a parametric model
  • Raspbian – Raspbian is a free operating system based on Debian optimized for the Raspberry Pi hardware.
  • Signal Wizard – Digital signal processing software.

School of Mathematics

  • EIDORS – Electrical Impedance Tomography and Diffuse Optical Tomography Reconstruction Software.
  • Fractional Matrix Powers – MATLAB functions to compute fractional matrix powers with Frechet derivatives and condition number estimate
  • fAbcond – Python code for the condition number of a matrix exponential times a vector
  • funm_quad – Quadrature-based Arnoldi restarts for matrix function computations in MATLAB
  • IFISS – IFISS is a graphical package for the interactive numerical study of incompressible flow problems which can be run under Matlab or Octave.
  • MARKOVFUNMV – An adaptive black-box rational Arnoldi method for the approximation of Markov functions.
  • Matrix Computation Toolbox – The Matrix Computation Toolbox is a collection of MATLAB M-files containing functions for constructing test matrices, computing matrix factorizations, visualizing matrices, and carrying out direct search optimization.
  • Matrix Function Toolbox – The Matrix Function Toolbox is a MATLAB toolbox connected with functions of matrices.
  • Matrix Logarithm – MATLAB Files. Two functions for computing the matrix logarithm by the inverse scaling and squaring method.
  • Matrix Logarithm with Frechet Derivatives and Condition Number – MATLAB files
  • NLEVP A Collection of Nonlinear Eigenvalue Problems – This MATLAB Toolbox provides a collection of nonlinear eigenvalue problems.
  • oomph-lib – An object-oriented, open-source finite-element library for the simulation of multiphysics problems.
  • rktoolbox – A Rational Krylov Toolbox for MATLAB
  • Shrinking (MATLAB) – MATLAB codes for restoring definiteness of a symmetric matrix by shrinking
  • Shrinking (Python) – Python codes for restoring definiteness of a symmetric matrix by shrinking
  • Simfit – Free software for simulation, curve fitting, statistics, and plotting.
  • SmallOverlap – SmallOverlap is a GAP 4 package which implements new, highly efficient algorithms for computing with finitely presented semigroups and monoids whose defining presentations satisfy small overlap conditions (in the sense of J.H.Remmers)
  • Symmetric eigenvalue decomposition and the SVD – MATLAB files
  • testing_matrix_functions – MATLAB files for testing matrix function algorithms using identities such as exp(log(A)) = A

School of Mechanical, Aerospace and Civil Engineering (MACE)

  • DualSPHysics – DualSPHysics is based on the Smoothed Particle Hydrodynamics model named SPHysics and makes use of GPUs.
  • FLIGHT – FLIGHT specialises in the prediction and modelling of fixed-wing aircraft performance
  • SPHYSICS – SPHysics is a platform of Smoothed Particle Hydrodynamics (SPH) codes inspired by the formulation of Monaghan (1992) developed jointly by researchers at the Johns Hopkins University (U.S.A.), the University of Vigo (Spain), the University of Manchester (U.K.) and the University of Rome La Sapienza (Italy).
  • SWAB Online – Innovative and User Friendly Web Application in Running Fortran-based 1-D Shallow Water near Shore Wave Simulation Modelling

School of Physics and Astronomy

  • Herwig++ – Herwig++ is a new event generator, written in C++, built on the experience gained with the well-known event generator HERWIG, which was used by the particle physics community for nearly 30 years. Herwig++ is used by the LHC experiments to predict the results of their collisions and as an essential component of their data analysis. It is developed by a consortium of four main nodes, including Manchester, and its published write-up has been cited over 500 times.
  • im3shape – Im3shape measures the shapes of galaxies in astronomical survey images, taking into account that they have been distorted by a point-spread function.
  • MAD8/madinput – Mathematica code and MAD8 installer for performing optics calculations for particle accelerator design.
  • PolyParticleTracker – MATLAB code for particle tracking against complex optical backgrounds

May 3rd, 2013 | Categories: control theory, math software, matlab | Tags:

I recently picked up a few control theory books from the University library to support a project I am involved with right now and was interested in the seemingly total dominance of MATLAB in this subject area.  Since I’m not an expert in control systems, I’m not sure if this is because MATLAB is genuinely the best tool for the job or if it’s simply because it’s been around for a very long time and so has become entrenched.  Comments from anyone who works in relevant fields would be most welcome.

On its own, MATLAB is insufficient to teach introductory control systems courses — you also need the control systems toolbox as a bare minimum but most books and courses also seem to require Simulink and the symbolic math toolbox.  All of these are included in the student edition of MATLAB which is very reasonably priced.

If you are not a registered student, however, and don’t work for someone who can provide you with MATLAB it’s going to be very expensive!  As far as I can tell, your only option would be to purchase commercial licenses which are very expensive (as in thousands of dollars/pounds for MATLAB and a few toolboxes).

What else is out there?

I have a strong interest in mathematical software and so I know that there are several products that have support for control theory. Here are some that I know of and have access to myself

  • Mathematica – Its symbolic math support far exceeds that of MATLAB and it is on an equal footing numerically but its control systems support is much more recent and I don’t know of a textbook that utilizes it.  One benefit of Mathematica is that it doesn’t separate functionality out into toolboxes – everything is just built in.  Another benefit to tinkerers is the home edition which gives you the full product at a much lower price than commercial licenses.
  • Maple – This also has very strong symbolic and numeric math support.  It also comes with some Control Systems support built in.  Like Mathematica, it has a home edition for non-commercial tinkering and learning.
  • Labview – A graphical programming language that I’m only just starting to get used to.  It has lots of users and advocates in my employers electrical and mechanical engineering departments.  There is no support for symbolic computing as far as I know.
  • Python – Python is a superb general purpose scripting language that’s also completely free.  Numerics are taken care of by Numpy, symbolics by Sympy and there is a control theory module, the development of which is coordinated by Richard Murray of Caltech (The same Richard Murray that co-wrote the book Feedback Systems: An Introduction for Scientists and Engineers).
  • Octave – Octave is a free implementation of the MATLAB .m language.  It also has a free control package.
  • Scilab – Scilab is a free numerical environment that also has a free control package.

I haven’t mentioned Simulink alternatives in this post since I’ve discussed them before.

Questions

Some questions that arise are

  • Are there any other alternatives to those listed above?
  • Do these alternatives have sufficient functionality to support undergraduate courses in control systems and control theory?
  • What would be the best language to use if you were teaching control systems as a Massively Open Online Course (MOOC)?
  • Does it matter to employers which computational language you learned your control systems in as an undergraduate?

I find that the final point is very divisive among people I discuss it with.  On the one hand you have those who say ‘It’s the concepts that matter, the language you choose to implement them in is much less important’ and on the other hand you have those who say ‘It’s gotta be MATLAB, my father used MATLAB and his grandfather before him. Industry uses MATLAB, I only know MATLAB, we must teach MATLAB.’

May 1st, 2013 | Categories: math software, Month of Math Software | Tags:

As I type this, the sun is shining (finally!) and the skies are blue.  You’d think that it would be difficult to concentrate on writing this Month’s mathematical software round-up but it has been such an interesting month that it turned out to be a breeze.  Thanks to everyone who submitted news items for this month’s review, your feedback and generosity is greatly appreciated–I would have given up long ago without it.

If you have any news items for next month’s issue, please let me know via the usual channels.  Click here for the Month of Math Software Archives.

Things that are a bit like MATLAB

Things written for MATLAB

  • GAGA: GPU Accelerated Greedy Algorithms for Compressed Sensing is “a software package for solving large compressed sensing problems with millions of unknowns in fractions of a second by exploiting the power of graphics processing units”. It saw its first ever release in April.
  • Version 3.4.3.3481 of the Multiprecision Computing Toolbox for MATLAB was released in April bringing several enhancements including the addition of the incomplete gamma function, improvement to the accuracy of eigensolvers and speed up of determinant computations.

Spreadsheets

  • One of the most famous spreadsheet errors of all time was unearthed this month.  I’ll leave the explaining to the BBC and New Scientist.
  • Gnumeric is the free spreadsheet program from the GNOME Office project and April saw it updated to version 1.12.2  Updates include a set of new computational functions, fixes to various file import tools and a new font selector.

Graphs and Plotting

  • GNUPlot is a free, open source plotting package that’s been around for over 25 years.  It has been ported to almost every computer system known to man including Ye Olde Windows MobileAndroid and Raspberry Pi along with all of the platforms you’d usually expect.  April 2013 saw version 4.6.3 and the list of changes is at http://www.gnuplot.info/announce_4.6.3.txt
  • DISLIN is a plotting library for C, Fortran 77 and Fortran 90/95 and is also callable from several other languages including Perl,Python and Java.  Developed by the Max Plank Institute for Solar System Research, DISLIN has just hit version number 10.3.2.  Take a look at the new goodness here.

Numerical libraries

Python

It’s been a big month for mathematical and scientific software in Python with several releases of note.

  • After 7 months of work, The SciPy team have unveiled version 0.12.0.  The full list of updates is at http://sourceforge.net/projects/scipy/files/scipy/0.12.0/ but standout features for me are a Basin Hopping Global Optimisation routine (never heard of that algorithm but sounds interesting),  the ability to inspect the contents of MATLAB .mat files without actually reading them to memory and documented BLAS and LAPACK low-level interfaces.
  • According to its website, numexpr “evaluates multiple-operator array expressions many times faster than NumPy can.”  In other words, numexpr is one way to get Python code going faster.  Something that I didn’t realise until I wrote this entry is that it supports the high performance Intel Vector Math Library (VML).  April saw a release to version 1.4.2 with the new stuff listed at https://code.google.com/p/numexpr/wiki/ReleaseNotes
  • Pweave is a scientific report generator and a literate programming tool for Python, inspired by Sweave for R.  Version 0.21.2 of Pweave was released earlier this month — take a look at the release notes for details of what’s new.  Thanks to @mpastell for the news.
  • The IPython (Interactive computing in Python) team have released a bugfix update.  The details of version 0.13.2 are in the release notes.
  • Version 1.0 of the PyASTRAToolbox was released on 23rd April.  “The PyASTRAToolbox is a Python interface to the ASTRA Toolbox, a tomography toolbox based on high-performance GPU primitives for 2D and 3D tomography.”

Misc

  • Derek of Coding-guidelines.com has released version 0.5 of his Numbers tool which looks at the numeric literals contained in the source code of any program you pass to it. The numbers program extracts these literals, compares them against a database of ‘interesting’ values and prints out any matches; it can also print out values that don’t match.  The matching is fuzzy, the intent being to find mistakes.  To see why this might be interesting and useful, take a look at this blog post where Derek discovers that both Maxima and R use a wide variety of different literal values for pi.
  • Version 2.19-5 of Magma, the regularly updated, commercial computer algebra system with a focus on algebra, number theory, algebraic geometry and algebraic combinatorics has been released.
  • Version 6.1 of MapleSim has been released.  MapleSim is a physical modeling and simulation tool.

From the blogs

 

April 23rd, 2013 | Categories: Making MATLAB faster, matlab, programming | Tags:

I was recently working on some MATLAB code with Manchester University’s David McCormick.  Buried deep within this code was a function that was called many,many times…taking up a significant amount of overall run time.  We managed to speed up an important part of this function by almost a factor of two (on his machine) simply by inserting two brackets….a new personal record in overall application performance improvement per number of keystrokes.

The code in question is hugely complex, but the trick we used is really very simple.  Consider the following MATLAB code

>> a=rand(4000);
>> c=12.3;
>> tic;res1=c*a*a';toc
Elapsed time is 1.472930 seconds.

With the insertion of just two brackets, this runs quite a bit faster on my Ivy Bridge quad-core desktop.

>> tic;res2=c*(a*a');toc
Elapsed time is 0.907086 seconds.

So, what’s going on? Well, we think that in the first version of the code, MATLAB first calculates c*a to form a temporary matrix (let’s call it temp here) and then goes on to find temp*a’.  However, in the second version, we think that MATLAB calculates a*a’ first and in doing so it takes advantage of the fact that the result of multiplying a matrix by its transpose will be symmetric which is where we get the speedup.

Another demonstration of this phenomena can be seen as follows

>> a=rand(4000);
>> b=rand(4000);
>> tic;a*a';toc 
Elapsed time is 0.887524 seconds.
>> tic;a*b;toc  
Elapsed time is 1.473208 seconds.
>> tic;b*b';toc
Elapsed time is 0.966085 seconds.

Note that the symmetric matrix-matrix multiplications are faster than the general, non-symmetric one.

April 18th, 2013 | Categories: math software, mathematica, Windows 8 | Tags:

A friend of mine recently got hold of a Microsoft Surface Pro tablet and he let me have a play on it for a couple of hours.  So, I installed Mathematica 9 and ran the benchmark.  A screenshot of the result is below with the Surface’s result in blue.  Not bad for a tablet!

Touch controlled Manipulates were a lot of fun too.  If only I could run such things on my iPad as appeared to be promised in http://blog.wolfram.com/2012/02/17/a-preview-of-cdf-on-ipad/

My only other comment is that the Touch Cover is truly awful, reminding me of ye-olde ZX81, but I’ve been told that the Type Cover is much better

Mathematica 9 benchmark on surface pro