<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/***
  StyleSheet used for my own customization (jpc 2011)
  I remove the sidebar for production. 

***/
/*{{{*/

#sidebar { display:none;margin-right:1em; }

#displayArea {
  font-size: 1.2em;
  
  margin-right:1em;
}

/*}}}*/
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected {color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}
.readOnly {background:[[ColorPalette::TertiaryPale]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:alpha(opacity=60);}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0; top:0;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0 3px 0 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0; padding-bottom:0;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser

Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])

<<option txtUserName>>
<<option chkSaveBackups>> [[SaveBackups]]
<<option chkAutoSave>> [[AutoSave]]
<<option chkRegExpSearch>> [[RegExpSearch]]
<<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]]
<<option chkAnimate>> [[EnableAnimations]]

----
Also see [[AdvancedOptions]]
<<importTiddlers>>
A few comparison tests between Matlab, Octave, Scilab and Nsp by [[Bruno Pincon|http://www.iecn.u-nancy.fr/~pincon]] are available [[here|bench.pdf]] as a pdf document. The code is given [[here|files/BenchSciMtlb.tgz]] and the results are summerized here in a table:

|!test|!octave 2.9.10|!matlab 7.1|!nsp|!scilab-unix|!scilab-win|
|fibonnaci |  5.768 |  2.153 |  1.230 |  1.460 |  1.362|
|subsets |  6.444 |  1.883 |  1.484 |  2.760 |  2.854|
|irn55_rand |  7.485 |  1.372 |  1.750 |  1.560 |  1.692|
|tri fusion |  7.881 |  0.571 |  1.407 |  1.430 |  1.282|
|tri rapide |  8.144 |  1.973 |  1.494 |  1.900 |  1.612|
|harmvect |  1.745 |  1.702 |  1.169 |  1.230 |  1.152|
|harmloop |  5.486 |  0.030 |  1.876 |  1.790 |  1.692|
|fannkuch |  7.433 |  0.831 |  1.343 |  0.900 |  0.831|
|mon_lu |  3.135 |  2.023 |  1.544 |  1.850 |  1.953|
|crible |  1.092 |  0.981 |  0.985 |  1.210 |  1.432|
|make_perm |  5.431 |  1.021 |  1.146 |  1.740 |  1.472|
|inv_perm |  6.206 |  0.010 |  1.128 |  0.910 |  0.831|
|fftx | 18.020 |  3.104 |  1.737 |  7.290 |  7.140|
|pascal |  3.413 |  0.481 |  1.084 |  1.310 |  2.964|
|hmeans |  4.351 |  1.833 |  1.605 |  3.090 |  4.987|
|simplexe |  1.883 |  1.072 |  1.248 |  1.630 |  1.773|
|loop_call_f |  6.611 |  0.100 |  1.306 |  1.710 |  1.292|
|loop_call_p |  3.706 |  0.300 |  1.039 |  0.470 |  0.461|
|form_vect1 |  1.963 |  2.664 |  0.029 |  2.110 |  4.266|
|form_vect2 |  4.230 |  2.864 |  0.815 |  1.390 |  3.024|
|loop1 |  4.576 |  0.010 |  1.407 |  1.330 |  1.242|
|loop2 | 14.155 |  0.040 |  2.115 |  1.960 |  1.853|
|loop3 |  5.378 |  0.010 |  1.644 |  1.550 |  1.452|
|test bool |  1.416 |  3.986 |  1.238 |  2.840 |  3.175|
|test find |  4.801 |  2.363 |  1.417 |  4.490 |  4.857|
|prime_factors | 17.843 |  0.060 |  0.851 |  5.000 |  4.236|
|extraction |  3.557 |  1.562 |  1.189 |  3.080 |  3.124|
|insertion |  2.209 |  1.242 |  1.177 |  2.270 |  2.293|
|!Total time (sec) | 164.36 |  36.24 |  36.45 |  60.26 |  66.31|



You can compile and run {{{nsp}}} from source on Linux. It can also be cross-compiled for windows and the cross-compiled version can be tested with wine. The windows binaries are obtained by cross-compilation.

! Source files 

* Source Files of version cvs (Sept 2020) [[nsp-cvs.tgz|files/nsp-cvs.tgz]]. This sources files contains a set of contribs in the directory toolboxes.
* Source Files of version 1.4 (May 2019) [[nsp-1.4.tgz|files/nsp-1.4.tgz]]. This sources files contains a set of contribs in the directory toolboxes.
* Source Files of version 1.3 (Jul 2017) [[nsp-1.3.tgz|files/nsp-1.3.tgz]]. This sources files contains a set of contribs in the directory toolboxes.
* Source Files of version 1.2 (Mar 2017) [[nsp-1.2.tgz|files/nsp-1.2.tgz]]. This sources files contains a set of contribs in the directory toolboxes.
* Source Files of version 1.1 (Aug 2016) [[nsp-1.1.tgz|files/nsp-1.1.tgz]]. This sources files contains a set of contribs in the directory toolboxes.

! Anonymous CVS access via ssh (Aug 2016)

You can access the cvs repository of Nsp using Anonymous CVS access via ssh. There are two methods you can use; for either method, you will need [[this file|files/sshanoncvs.txt]] and you will have to use one of the two following methods.

* Download the text file [[sshanoncvs.txt|files/sshanoncvs.txt]], make it executable, put it somewhere, say, {{{~/bin/sshanoncvs}}}. Then set the {{{CVS_RSH}}} environment variable to point to it and use {{{cvs}}} as you normally would. For example, just run this command to check out nsp:

{{{
  CVS_RSH=~/bin/sshanoncvs cvs -d :ext:nsp@titan.enpc.fr:/u/cermics/q/nsp/cvsroot checkout nsp2      
}}}

* Just use [[the file|files/sshanoncvs.txt]] as a {{{ssh}}} key file without making it executable. Download the file, set its permissions to 600, and put it in {{{~/.ssh/sshanoncvs}}}. Then add the following to your {{{~/.ssh/config}}}:

{{{
Host titan.enpc.fr                                                                                   
User nsp                                                                                             
IdentityFile ~/.ssh/sshanoncvs                                                                       
ForwardAgent no                                                                                      
ForwardX11 no                                                                                        
Compression yes                                                                                      
}}}

Then just set {{{CVS_RSH=ssh}}} and checkout as normal:
{{{
      SSH_AUTH_SOCK= CVS_RSH=ssh cvs -d :ext:nsp@titan.enpc.fr:/u/cermics/q/nsp/cvsroot checkout nsp2
}}}

Note that either of the two methods above require you be able to use {{{ssh}}} 2.

[[Introduction]]

Version 1.4 (May 2019) will be progressively available. It contains scicos, modnum, coselica, control, signal, robust toolboxes. It also contains a simulink importer. The Windows version is compiled with gtk3, the Linux version can be compiled with gtk2 or gtk3.
* Source Files of version cvs (Sept 2020) [[nsp-cvs.tgz|files/nsp-cvs.tgz]]. This sources files contains a set of contribs in the directory toolboxes.
* Source Files of version 1.4 (May 2019) [[nsp-1.4.tgz|files/nsp-1.4.tgz]]. This sources files contains a set of contribs in the directory toolboxes.
* Source Files of version 1.3 (Jul 2017) [[nsp-1.3.tgz|files/nsp-1.3.tgz]]. This sources files contains a set of contribs in the directory toolboxes.
* Source Files of version 1.2 (Mar 2017) [[nsp-1.2.tgz|files/nsp-1.2.tgz]]. This sources files contains a set of contribs in the directory toolboxes.
* Source Files of version 1.1 (Aug 2016) [[nsp-1.1.tgz|files/nsp-1.1.tgz]]. This sources files contains a set of contribs in the directory toolboxes.
* [img[images/windows-s.png]] Windows 64bits: 
** (April 22 2019) [[nsp-1.4-beta2-gtk3-w64.exe|files/windows/nsp-1.4-beta2-gtk3-w64.exe]]. This version contains a gtk+-3.0 runtime for windows. In this version scicos is a toolbox. You can use the Load toolbox menus to load scicos and scicos() to start scicos; Note that starting the manual page can be very slow the first time it runs, around one minute, since a font cache is built. The simport version is svn rev 3860.
** (March 02 2019) [[nsp-1.4-beta1-gtk3-w64.exe|files/windows/nsp-1.4-beta1-gtk3-w64.exe]]. This version contains a gtk+-3.0 runtime for windows. In this version scicos is a toolbox. You can use the Load toolbox menus to load scicos and scicos() to start scicos; Note that starting the manual page can be very slow the first time it runs, around one minute, since a font cache is built. The simport version is svn rev 3860.
** (July 21 2017) [[nsp-1.3-gtk3-w64.exe|files/windows/nsp-1.3-gtk3-w64.exe]]. This version contains a gtk+-3.0 runtime for windows. In this version scicos is a toolbox. You can use the Load toolbox menus to load scicos and scicos() to start scicos; Note that starting the manual page can be very slow the first time it runs, around one minute, since a font cache is built. The simport version is svn rev 3534.
** (March 05 2017) [[nsp-1.2-gtk3-w64.exe|files/windows/nsp-1.2-gtk3-w64.exe]]. This version contains a gtk+-3.0 runtime for windows. In this version scicos is a toolbox. You can use the Load toolbox menus to load scicos and scicos() to start scicos; Note that starting the manual page can be very slow the first time it runs, around one minute, since a font cache is built. The simport version is svn rev 3075.
* [img[images/windows-s.png]] Windows 32bits: 
** (July 21 2017) [[nsp-1.3-gtk3-w32.exe|files/windows/nsp-1.3-gtk3-w32.exe]]. This version contains a gtk+-3.0 runtime for windows. In this version scicos is a toolbox. You can use the Load toolbox menus to load scicos and scicos() to start scicos; Note that starting the manual page can be very slow the first time it runs, around one minute, since a font cache is built. The simport version is svn rev 3534.
** (March 05 2017) [[nsp-1.2-gtk3-w32.exe|files/windows/nsp-1.2-gtk3-w32.exe]]. This version contains a gtk+-3.0 runtime for windows. In this version scicos is a toolbox. You can use the Load toolbox menus to load scicos and scicos() to start scicos; Note that starting the manual page can be very slow the first time.  The simport version is svn rev 3075.
* [img[images/UbuntuLogo-s.png]] Ubuntu 64bits and 32bits version 1.4 are available for xenial, bionic, cosmic, disco,  eoan on Ubuntu Launchpad:
** sudo add-apt-repository ppa:jpc-cermics/nsp
** sudo apt-get update
** sudo apt-get install nsp 
* [img[images/fedora-small.jpg]] Fedora 64:
** Fedora 24 rpms (Sept 03 2016) [[nsp-gtk3-1_1-1.f24.x86_64.rpm|files/fedora/nsp-gtk3-1_1-1.f24.x86_64.rpm]]
** Fedora 23 rpms (Sept 03 2016) [[nsp-gtk3-1_1-1.f23.x86_64.rpm|files/fedora/nsp-gtk3-1_1-1.f23.x86_64.rpm]]
* [img[images/fedora-small.jpg]] Fedora 32:
** Fedora 24 rpms (Sept 03 2016) [[nsp-gtk3-1_1-1.f24.i686.rpm|files/fedora/nsp-gtk3-1_1-1.f24.i686.rpm]]
** Fedora 21 rpms (Sept 13 2015) [[nsp2-1_0-1.0.f21.i686.rpm|files/fedora/nsp2-1_0-1.0.f21.i686.rpm]]
* [img[images/debian-s.png]] Debian 64:
** Debian Jessie amd64 (Aug 27 2016) [[nsp-gtk3_1.1-2_amd64.jessie.deb|files/debian/nsp-gtk3_1.1-2_amd64.jessie.deb]]
** Debian Wheezy amd64 (17 Oct 2015) [[nsp2_1.0-1_amd64.wheezy.deb|files/debian/nsp2_1.0-1_amd64.wheezy.deb]]
* [img[images/debian-s.png]] Debian 32:
** Debian Jessie i386 (19 Oct 2015) [[nsp2_1.0-2_i386.jessie.deb|files/debian/nsp2_1.0-2_i386.jessie.deb]]
** Debian Wheezy i386 (17 Oct 2015) [[nsp2_1.0-1_i386.wheezy.deb|files/debian/nsp2_1.0-1_i386.wheezy.deb]]
* [img[images/sl.png]] Scientific Linux 64:
** SL 6.4 64bits (22 Aug 2013) [[nsp2-cvs-2013_08_22-1.0.sl6.x86_64.rpm|files/scientific-linux/nsp2-cvs-2013_08_22-1.0.sl6.x86_64.rpm]] 
* [img[images/sl.png]] Scientific Linux 32:
** SL 6.4 32bits (26 Aug 2013) [[nsp2-cvs-2013_08_23-1.0.sl6.i386.rpm|files/scientific-linux/nsp2-cvs-2013_08_23-1.0.sl6.i386.rpm]] 
* [img[images/apple.png]] ~MacOSX:
** Sierra (Sept 2017) [[Nsp-1_3-1.dmg|files/macosx-sierra/Nsp-1_3-1.dmg]]. This version is a gtk3 native version. It contains scicos-4.4 which can be loaded by executing load_toolbox('scicos-4.4') and started using scicos(), simport and other toolboxes
** El Capitan (Sept 2017) [[Nsp-1_3-1.dmg|files/macosx-el-capitan/Nsp-1_3-1.dmg]]. This version is a gtk3 native version. It contains scicos-4.4 which can be loaded by executing load_toolbox('scicos-4.4') and started using scicos(), simport and other toolboxes
*** older version (April 2016) [[Nsp-1_0-2.dmg|files/macosx-el-capitan/Nsp-1_0-2.dmg]]. Contains scicos-4.4 which can be loaded by executing load_toolbox('scicos-4.4') and started using scicos().
** Yosemite (Sept 2017) [[Nsp-1_3-1.dmg|files/macosx-yosemite/Nsp-1_3-1.dmg]]. This version is a gtk3 native version. It contains scicos-4.4 which can be loaded by executing load_toolbox('scicos-4.4') and started using scicos(), simport and other toolboxes
*** older version (03 Oct 2015) [[Nsp-1_0.dmg|files/macosx-yosemite/Nsp-1_0.dmg]]. Contains scicos-4.4 which can be loaded by executing load_toolbox('scicos-4.4') and started using scicos().
** Mavericks (03 Oct 2015) [[Nsp-1_0.dmg|files/macosx-mavericks/Nsp-1_0.dmg]]. Contains scicos-4.4 which can be loaded by executing load_toolbox('scicos-4.4') and started using scicos().
** Mountain Lion (03 Oct 2015) [[Nsp-1_0.dmg|files/macosx-mountain-lion/Nsp-1_0.dmg]]. Contains an experimental unsupported version of scicos-4.4 which can be loaded by executing Nsp.app/Contents/Resources/nsp2-cvs/toolboxes/scicos-4.4/loader.sce and started using scicos().
* Archlinux 64:
** (23 Nov 2017) [[version 1.3: nsp3-archlinux-4.9-x86-64.tgz|files/archlinux/nsp3-archlinux-4.9-x86-64.tgz]] A tarball of a binary version for Archlinux 64 bits. Nsp can be started by running bin/nsp 
* A set of scicos blocks tests for nsp [[scicos_work.tgz|files/scicos_work.tgz]]
* Linear algebra through lapack/blas 
* Interface to Umfpack
* Interface to Cholmod 
* Interface to libsndfile 
* Interface to Gtk 
<<tabs txtPluginsTa
'1' "1" GalleryImg1
'2' "2" GalleryImg2
'3' "3" GalleryImg3
'4' "4" GalleryImg4
'5' "5" GalleryImg5
'6' "5" GalleryImg6
'7' "5" GalleryImg7
>>

A Nsp graphic window embeded in a Gtk window with different widgets

[img[images/graphics-demo-small.png][images/graphics-demo.png]]
Build a Gtk widget in Nsp 

[img[images/demogtk-small.png][images/demogtk.png]]      
  
Nsp matrix edition in a Gtk Widget.

[img[images/gtk-widgets-small.png][images/gtk-widgets.png]] 
  
Nsp main window.

[img[images/main-window-small.png][images/main-window.png]]  
  
Nsp help window.

[img[images/help-window-small.png][images/help-window.png]]  
  
A screen snapshot on Windows. 

[img[images/nsp.png][images/nsp-big.png]] 
  
A screen snapshot on Linux.

[img[images/nsp-unix-small.png][images/nsp-unix.png]]    
To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:
* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* MainMenu: The menu (usually on the left)
* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>

Test 
Next Figure gives the screen shot of a gtk window which is 
built and activated from Nsp. 

[img[images/demogtk.png]]

The graphic window is composed of a main window, a standard nsp 
graphic window (which is itself a set of widgets) an adjustment 
widget, three radio buttons and a close button. 
When the adjustment button is moved the graph has to be recomputed and 
redisplayed which a new grid size. When a radio button is changed 
then the graph has to be redrawn with a changed colormap. 

Gtk widget can be created and assembled in nsp in a similar way as if 
the code was written in C. i.e the sequence of function call (or method 
call is very similar). Note that at nsp level we use an object oriented way 
to call Gtk functions. For example,  a call to 
 {{{void gtk_window_set_title(GtkWindow *window,const gchar *title)}}}
is replaced in Nsp by calling the method {{{set_title}}} on a {{{GtkWindow}}}
object. All the Gtk widgets can be used at nsp level. 
For example a {{{GtkWindow}}} widgets is created by calling 
{{{gtkwindow_new()}}}.

The best way to rapidly write nsp gtk application is to start by 
running the gtk demos and use their associated code as a guide and 
use a gtk on line help manual to get real precise informations 
on each function. For example to get more information on 
a method call like {{{scale.set_size_request[150,-1]}}} you can 
search the string {{{set_size_request}}} in Gtk help pages (through devhelp) 
to obtain a reference to {{{gtk_widget_set_size_request ()}}}. 
{{{set_size_request}}} is a method of the class {{{GtkWidget}}} and 
since a {{{Gtkhscale}}} inherits from {{{GtkWidget}}} this method 
can be used on the argument {{{scale}}} 

Note also that a set of predefined gtk constants are accessible at 
nsp level through predefined hash tables. Thus prefixing a predefined name by {{{GTK.}}} 
will give its value. 

The last important point is that handlers associated to signals can be given by nsp functions. 
If the adjustment is moved on the described application, then a call to 
{{{demo_dyn_graph_value_changed}}}
is performed. And when the handler is called, it is 
called with appropriate arguments. The handler was connected with the command 

{{{
 adjustment.connect[ "value_changed", 
                    demo_dyn_graph_value_changed, list(id_win,scale,win)];
}}}

Thus, when called the argument {{{widget}}} will be set to the GTkAdjustement widget which was 
changed and {{{args}}} will be set to the list {{{list(id_win,scale,win)}}}. 
Thus when called, handlers receive specific informations through arguments (here a 
widget and a list, the list being composed of an integer, a GtkHscale widget and a GtkWindow widget).

More than one instance of the same application can coexists, since handlers when called 
knows though their arguments which widgets and data they own. 

Gtk objects for example a GtkWindow are objects with a by reference semantic and it is possible 
to store data in each Gtk object through the use of methods {{{get_data}}} and {{{set_data}}}.
It is therefore possible to share data between widgets using this mechanism. For example 
the grid size is store in the main GtkWindow of the application with key {{{hscale}}}. 
When it is changed by calling {{{demo_dyn_graph_value_changed}}} the field {{{hscale}}} of 
the GtkWindow is updated (See {{{args(3).set_data[hscale=args(2).get_value[]]}}}) and this 
values will also be accessible in other handlers since the GtkWindow is added as argument 
to all handlers and the GtkWindow arguments are all references to the same real GtkWindow object.
It is then possible to share data between independent functions without using global variables.

Note also that when handlers are connected to a signal, in fact the handler function is 
copied. Thus, it is possible to use local functions as handlers. 

* The main function 

{{{
function demo_dyn_graph()
  win = gtkwindow_new()
  win.connect["delete_event", demo_delete];
  win.set_title["range_controls"];
  box1 = gtkvbox_new(homogeneous=%f,spacing=0)
  win.add[box1]
  box1.show[]
  id_win=nsp_graphic_new(win,box1,dim=[300,200]);
  //adjustment = GtkAdjustment(0,expand= 0,fill= 101,padding= 0.1, 1, 1)
  initial_v=10;
  adjustment =gtkadjustment_new(value=initial_v,lower=5,upper=21,step_incr=1,...
				page_incr=1,page_size=1)
  win.set_data[hscale=initial_v];
  scale = gtkhscale_new(adjustment=adjustment)
  scale.set_size_request[150,-1]
  scale.set_update_policy[GTK.UPDATE_DELAYED];
  scale.set_digits[1];
  scale.set_draw_value[%t];
  box1.pack_start[scale,expand=%f,fill=%f,padding=0]
  scale.show[]
  adjustment.connect[ "value_changed", demo_dyn_graph_value_changed,...
		      list(id_win,scale,win)];

  box2=gtkvbox_new(homogeneous=%f,spacing=0);
  box1.pack_start[box2,expand=%f,fill=%t,padding=0];
  box1=box2;
  
  // hbox for radio buttons 
  // ----------------------
  box2 = gtkhbox_new(homogeneous=%f,spacing=0)
  box2.set_border_width[10]
  box1.pack_start[box2,expand=%f,fill=%f,padding=0];
  box2.show[];
  // radio buttons
  // ----------------------
  // The "toggled" signal
  button1=gtkradiobutton_new(label="hot")
  box2.pack_start[button1]
  button1.show[]
  // button1 i sthe default selection.
  button1.set_active[%t];
  win.set_data[colormap_id = 1];
  //
  button1.connect["toggled",demo_dyn_graph_toggled, list(id_win,button1,1,win)];
  // 
  button=gtkradiobutton_new(group=button1,label= "gray");
  box2.pack_start[button];
  button.show[];
  button.connect[ "toggled",demo_dyn_graph_toggled,
		   list(id_win,button,2,win)];
  // 
  button=gtkradiobutton_new(group=button1,label= "jet");
  box2.pack_start[button];
  button.show[];
  button.connect[ "toggled",demo_dyn_graph_toggled,
		   list(id_win,button,3,win)];

  separator = gtkhseparator_new ();
  box1.pack_start[separator];
  separator.show[];
  // 
  button = gtkbutton_new(label="Close")
  button.connect["clicked", button_destroy_win,list(win)];
  box1.pack_start[button,expand=%f,fill=%f,padding=0]
  button.set_flags[GTK.CAN_DEFAULT]
  button.grab_default[]
  button.show[]
  win.show_all[]
  demo_dyn_graph_draw(id_win,10,1);
  //gtk_main()
endfunction
}}}

* Handler activated when adjustment is moved 

{{{
function demo_dyn_graph_value_changed(widget,args)
// args=list(win_id, gtkhscale,win);
  args(3).set_data[hscale=args(2).get_value[]];
  demo_dyn_graph_draw(args(1),args(2).get_value[],args(3).get_data['colormap_id']);
endfunction
}}}

* Handler activated when a radio button is pressed 

{{{
function demo_dyn_graph_toggled(widget,args)
  // args(2) is the gtkhscale
  if args(2).get_active[]==%t then 
   args(4).set_data[colormap_id =  args(3)];
  end
  value=args(4).get_data['hscale'];
  demo_dyn_graph_draw(args(1),value,args(3));
endfunction
}}}

* Update graphics with new parameters 

{{{
function demo_dyn_graph_draw(id,value,colormap_id)
  id1=xget('window');
  if id1<>id then xset('window',id);end 
  xclear();
  select colormap_id 
   case 1 then xset('colormap',hotcolormap(64));
   case 2 then xset('colormap',graycolormap(64));
   case 3 then xset('colormap',jetcolormap(64));
  end
  t=linspace(-%pi,%pi,value);plot3d1(t,t,sin(t)'*cos(t));
  if id1<>id then xset('window',id1);end 
endfunction
}}}
Nsp is a GPL Scientific Software Package. 
  * It is based on a complete new rewrite of [[ScilabGtk|http://cermics.enpc.fr/~jpc/scilab/site/Scilab-Gtk/Scilab-Gtk/index.htm]]
  * The interpreter is written in C and objects with an internal class system.
  * Gtk toolkit can be used from Nsp through a set of generated wrappers. The language bindings and class for Nsp are generated, the generator being based on the pygtk generator for [[python|http://www.python.org/]].
  * It is modular (modular interpreter design, possible dynamic link of internal and external libraries).
  * It should compile on Linux, ~MacOSX-[[macports|https://www.macports.org]], ~MacOSX-[[homebrew|http://brew.sh/]], Windows-[[Cygwin|http://www.cygwin.com/]], Windows-[[Mingwin|http://www.mingw.org]] native Win32. 
  * A source version is available under CVS. Archive tarball, Fedora rpms, Debian package and win32 installer will be also provided.
  * It is a GPL software.
  * A Google group for Nsp is available at [[Tumbi Google Group|http://groups.google.fr/group/tumbi]].
  * A bug report data base is available at [[Issues|http://code.google.com/p/tumbi/issues/list]].


<<tabs txtPluginsTa
'Linux' "Linux snapshot" GalleryImg7
'Windows' "Windows snapshot" GalleryImg6
>>

Nsp is powered by Jean -Philippe Chancelier, Francois Delebecque, Jerome Lelong, Ramine Nikoukhah, Bruno Pincon, Jean -Pierre Quadrat. 

The source code for Nsp is freely redistributable under the terms of the GNU General Public License ([[GPL version2|http://www.gnu.org/licenses/gpl-2.0.html]]) as published by the [[Free Software Foundation|http://www.gnu.org/]].

Simply put, the GPL says that anyone who redistributes the software, with or without changes, must pass along the freedom to further copy and change it. By distributing the complete source code for GNU Nsp under the terms of the GPL, we guarantee that you and all other users will have the freedom to redistribute and change Nsp.

Releasing the source code for Nsp has another benefit as well. By having access to all of the source code for a mathematical system like Nsp, you have the ability to see exactly how each and every computation is performed. There are no black boxes that hide the details of any calculation.

Although enhancements to Nsp that are written as function files in Nsp's scripting language are not required to be redistributed under the terms of the GPL, we encourage you to release your enhancements to Nsp under the same terms for the benefit of all users. We also encourage you to submit your changes for inclusion in future versions of Nsp.



[[Introduction]]
[[Gtk and Nsp]]
[[Cvs and sources]]
[[Download]]
[[Toolboxes]]
[[Benchmark]]
[[Gallery]]
[[License]]

----
[[Tiddlywiki|http://tiddlywiki.com]] <<version>>
Nsp, also known as Tumbi 
[img[images/tumbi-alone.png][Tumbi]]
Type the text for 'New Tiddler'
Out of the box, TiddlyWiki offers:
* Works with all major desktop [[browsers]] on Windows, Macintosh and Linux and many mobile browsers such as the Apple iPhone and the Nokia 770/N800
** You can SaveChanges with FireFox, [[Opera]], InternetExplorer for Windows, [[Safari]], and [[Camino]]
* The BackstageArea for handy access to authoring tools including [[importing|ImportTiddlers]] and [[synchronisation|http://www.tiddlywiki.org/wiki/Dev:Server_Adaptor_Mechanism]] of tiddlers with external files and servers
* Full text formatting including MonospacedText, ExtendedFormatting, NonWikiWordLinks, WikiWordEscape, PrettyLinks, SubHeadings, BulletPoints, NumberedBulletPoints, [[Tables]], BlockQuotes, HorizontalRules and the ability to use a CustomCssClass and  InlineHTML
* [img[images/tumbi.png][EmbeddedImages]]...EmbeddedImages
* [[Macros]] providing rich interactive features, including [[Sparklines]] and [[Gradients|GradientMacro]]
* InterfaceOptions and AdvancedOptions, including the ability to GenerateAnRssFeed, SaveBackups and AutoSave
* KeyboardShortcuts so you can finish editing a tiddler with Control-Enter or abandon it with Escape
* Extensive StartupParameters to control the behaviour of TiddlyWiki through specially crafted URLs
* There are [[translations]] of TiddlyWiki available in many languages, including [[Chinese]], [[French]], [[German]], [[Spanish]], [[Portuguese]]
The [[Community]] around TiddlyWiki has extended this basic functionality with a wide range of [[Plugins]] and TiddlyWikiAdaptations.
!! Sedumi 1.1
 * A port of the [[Sedumi 1.1 |http://sedumi.ie.lehigh.edu]] toolbox is available: [[sedumi source nsp Mar 2010|toolboxes/sedumi-2010-03-16.tgz]]. The following version contains the win32 precompiled version [[sedumi nsp win32 Aug 2010 (tgz)|toolboxes/sedumi-win32-2010-08-12.tgz]] [[(sedumi nsp win32 Aug 2010 (zip))|toolboxes/sedumi-win32-2010-08-12.zip]]. It is only supposed to work with the cvs version from May 2010 or latter. It works also with the windows binary found in this site.
!! Gloptipoly
A port of [[Gloptipoly|http://www.laas.fr/~henrion/software/gloptipoly/]] is available here: [[gloptipoly nsp Jan 29 2009|toolboxes/gloptipoly.sce]]. You first have to install the nsp sedumi toolbox. Then, loading the file given here in nsp will give a gloptipoly function. Examples are given at the end of the file.
!! Interface with Mpi 
An interface with MPI: [[mpinsp April 3 2009|toolboxes/mpinsp.tgz]]. It contains a large tutorial file TUTORIAL.sce which is the Nsp port of [[TUTORIAL-FC3-R14SP1-LAM711|http://atc.ugr.es/%7Ejavier/investigacion/mpitb/TUTORIAL-FC3-R14SP1-LAM711]] (the tutorial file for [[mpitb|http://atc.ugr.es/javier-bin/mpitb]]).
!! Sivp 
A nsp version of the scicoslab toolbox sivp is available here [[(2017) sivp-nsp-0.2.6.tgz|toolboxes/sivp-nsp-0.2.6.tgz]]. You must first install opencv package, then untar the archive in the toolboxes repository of nsp and run the Makefile or the builder.sce (from nsp). 
!! Beta version of ~NspYalmip. 
An nsp port of yalmip made by  Sergey Solovyev. The current version allows to solve SDP problems via CSDP and Sedumi solvers (you need to get the Sedumi port described above). In order to use CSDP one need to add the path of a CSDP binary into the system environment variable PATH. [[NspYalmip Beta April 2011|toolboxes/nspyalmip.zip]]. 
!! Qhull
Interface to voronoi using the qhull library. [[qhullnsp-2014-02-13-w32-bin.zip|toolboxes/qhullnsp-2014-02-13-w32-bin.zip]]
Tumbi is the name for [[bee|http://en.wikipedia.org/wiki/Bee]] in [[Kannada|http://en.wikipedia.org/wiki/Kannada_language]]. A nice [[tumbi picture|http://www.flickr.com/photos/14516334@N00/345009210]] can be found on [[Flickr|http://www.flickr.com]].