Hybrid optimization technique for matrix chain... | F1000Research "use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(){var t=function(){var t,e,o=[],n=window,r=n;for(;r;){try{if(r.frames.__tcfapiLocator){t=r;break}}catch(t){}if(r===n.top)break;r=r.parent}t||(!function t(){var e=n.document,o=!!n.frames.__tcfapiLocator;if(!o)if(e.body){var r=e.createElement("iframe");r.style.cssText="display:none",r.name="__tcfapiLocator",e.body.appendChild(r)}else setTimeout(t,5);return!o}(),n.__tcfapi=function(){for(var t=arguments.length,n=new Array(t),r=0;r 3&&2===parseInt(n[1],10)&&"boolean"==typeof n[3]&&(e=n[3],"function"==typeof n[2]&&n[2]("set",!0)):"ping"===n[0]?"function"==typeof n[2]&&n[2]({gdprApplies:e,cmpLoaded:!1,cmpStatus:"stub"}):o.push(n)},n.addEventListener("message",(function(t){var e="string"==typeof t.data,o={};if(e)try{o=JSON.parse(t.data)}catch(t){}else o=t.data;var n="object"===_typeof(o)&&null!==o?o.__tcfapiCall:null;n&&window.__tcfapi(n.command,n.version,(function(o,r){var a={__tcfapiReturn:{returnValue:o,success:r,callId:n.callId}};t&&t.source&&t.source.postMessage&&t.source.postMessage(e?JSON.stringify(a):a,"*")}),n.parameter)}),!1))};"undefined"!=typeof module?module.exports=t:t()}(); dataLayer = dataLayer || []; // Standard GTM initialization - Google Consent Mode handles consent automatically (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl+ '>m_auth=hzk0Vc3qFsQYhCrIoHz68A>m_preview=env-1>m_cookies_win=x';f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-MWFK8L5J'); ;window.NREUM||(NREUM={});NREUM.init={distributed_tracing:{enabled:true},privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]}}; ;NREUM.loader_config={accountID:"438030",trustKey:"438030",agentID:"772317073",licenseKey:"97f8f67f26",applicationID:"772317073"} ;NREUM.info={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",licenseKey:"97f8f67f26",applicationID:"772317073",sa:1} ;/*! For license information please see nr-loader-spa-1.236.0.min.js.LICENSE.txt */ (()=>{"use strict";var e,t,r={5763:(e,t,r)=>{r.d(t,{P_:()=>l,Mt:()=>g,C5:()=>s,DL:()=>v,OP:()=>T,lF:()=>D,Yu:()=>y,Dg:()=>h,CX:()=>c,GE:()=>b,sU:()=>_});var n=r(8632),i=r(9567);const o={beacon:n.ce.beacon,errorBeacon:n.ce.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function c(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.D)(t,o),(0,n.Qy)(e,a[e],"info")}var u=r(7056);const d=()=>{const e={blockSelector:"[data-nr-block]",maskInputOptions:{password:!0}};return{allow_bfcache:!0,privacy:{cookies_enabled:!0},ajax:{deny_list:void 0,enabled:!0,harvestTimeSeconds:10},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},session:{domain:void 0,expiresMs:u.oD,inactiveMs:u.Hb},ssl:void 0,obfuscate:void 0,jserrors:{enabled:!0,harvestTimeSeconds:10},metrics:{enabled:!0},page_action:{enabled:!0,harvestTimeSeconds:30},page_view_event:{enabled:!0},page_view_timing:{enabled:!0,harvestTimeSeconds:30,long_task:!1},session_trace:{enabled:!0,harvestTimeSeconds:10},harvest:{tooManyRequestsDelay:60},session_replay:{enabled:!1,harvestTimeSeconds:60,sampleRate:.1,errorSampleRate:.1,maskTextSelector:"*",maskAllInputs:!0,get blockClass(){return"nr-block"},get ignoreClass(){return"nr-ignore"},get maskTextClass(){return"nr-mask"},get blockSelector(){return e.blockSelector},set blockSelector(t){e.blockSelector+=",".concat(t)},get maskInputOptions(){return e.maskInputOptions},set maskInputOptions(t){e.maskInputOptions={...t,password:!0}}},spa:{enabled:!0,harvestTimeSeconds:10}}},f={};function l(e){if(!e)throw new Error("All configuration objects require an agent identifier!");if(!f[e])throw new Error("Configuration for ".concat(e," was never set"));return f[e]}function h(e,t){if(!e)throw new Error("All configuration objects require an agent identifier!");f[e]=(0,i.D)(t,d()),(0,n.Qy)(e,f[e],"config")}function g(e,t){if(!e)throw new Error("All configuration objects require an agent identifier!");var r=l(e);if(r){for(var n=t.split("."),i=0;i {r.d(t,{D:()=>i});var n=r(50);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.Z)("Setting a Configurable requires an object as input");if(!t||"object"!=typeof t)return(0,n.Z)("Setting a Configurable requires a model to set its initial properties");const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.Z)("An error occurred while setting a property of a Configurable",e)}return r}catch(e){(0,n.Z)("An error occured while setting a Configurable",e)}}},6818:(e,t,r)=>{r.d(t,{Re:()=>i,gF:()=>o,q4:()=>n});const n="1.236.0",i="PROD",o="CDN"},385:(e,t,r)=>{r.d(t,{FN:()=>a,IF:()=>u,Nk:()=>f,Tt:()=>s,_A:()=>o,il:()=>n,pL:()=>c,v6:()=>i,w1:()=>d});const n="undefined"!=typeof window&&!!window.document,i="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),o=n?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),a=""+o?.location,s=/iPad|iPhone|iPod/.test(navigator.userAgent),c=s&&"undefined"==typeof SharedWorker,u=(()=>{const e=navigator.userAgent.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),d=Boolean(n&&window.document.documentMode),f=!!navigator.sendBeacon},1117:(e,t,r)=>{r.d(t,{w:()=>o});var n=r(50);const i={agentIdentifier:"",ee:void 0};class o{constructor(e){try{if("object"!=typeof e)return(0,n.Z)("shared context requires an object as input");this.sharedContext={},Object.assign(this.sharedContext,i),Object.entries(e).forEach((e=>{let[t,r]=e;Object.keys(i).includes(t)&&(this.sharedContext[t]=r)}))}catch(e){(0,n.Z)("An error occured while setting SharedContext",e)}}}},8e3:(e,t,r)=>{r.d(t,{L:()=>d,R:()=>c});var n=r(2177),i=r(1284),o=r(4322),a=r(3325);const s={};function c(e,t){const r={staged:!1,priority:a.p[t]||0};u(e),s[e].get(t)||s[e].set(t,r)}function u(e){e&&(s[e]||(s[e]=new Map))}function d(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"feature";if(u(e),!e||!s[e].get(t))return a(t);s[e].get(t).staged=!0;const r=[...s[e]];function a(t){const r=e?n.ee.get(e):n.ee,a=o.X.handlers;if(r.backlog&&a){var s=r.backlog[t],c=a[t];if(c){for(var u=0;s&&u {let[t,r]=e;return r.staged}))&&(r.sort(((e,t)=>e[1].priority-t[1].priority)),r.forEach((e=>{let[t]=e;a(t)})))}function f(e,t){var r=e[1];(0,i.D)(t[r],(function(t,r){var n=e[0];if(r[0]===n){var i=r[1],o=e[3],a=e[2];i.apply(o,a)}}))}},2177:(e,t,r)=>{r.d(t,{c:()=>f,ee:()=>u});var n=r(8632),i=r(2210),o=r(1284),a=r(5763),s="nr@context";let c=(0,n.fP)();var u;function d(){}function f(e){return(0,i.X)(e,s,l)}function l(){return new d}function h(){u.aborted=!0,u.backlog={}}c.ee?u=c.ee:(u=function e(t,r){var n={},c={},f={},g=!1;try{g=16===r.length&&(0,a.OP)(r).isolatedBacklog}catch(e){}var p={on:b,addEventListener:b,removeEventListener:y,emit:v,get:x,listeners:w,context:m,buffer:A,abort:h,aborted:!1,isBuffering:E,debugId:r,backlog:g?{}:t&&"object"==typeof t.backlog?t.backlog:{}};return p;function m(e){return e&&e instanceof d?e:e?(0,i.X)(e,s,l):l()}function v(e,r,n,i,o){if(!1!==o&&(o=!0),!u.aborted||i){t&&o&&t.emit(e,r,n);for(var a=m(n),s=w(e),d=s.length,f=0;fn,p:()=>i});var n=r(2177).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},4322:(e,t,r)=>{r.d(t,{X:()=>o});var n=r(5546);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.E,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.E);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3239:(e,t,r)=>{r.d(t,{bP:()=>s,iz:()=>c,m$:()=>a});var n=r(385);let i=!1,o=!1;try{const e={get passive(){return i=!0,!1},get signal(){return o=!0,!1}};n._A.addEventListener("test",null,e),n._A.removeEventListener("test",null,e)}catch(e){}function a(e,t){return i||o?{capture:!!e,passive:i,signal:t}:!!e}function s(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3?arguments[3]:void 0;window.addEventListener(e,t,a(r,n))}function c(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3?arguments[3]:void 0;document.addEventListener(e,t,a(r,n))}},4402:(e,t,r)=>{r.d(t,{Ht:()=>u,M:()=>c,Rl:()=>a,ky:()=>s});var n=r(385);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n._A?.crypto||n._A?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(31))),i.split("").map((e=>"x"===e?o(t,++r).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n._A?.crypto||n._A?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(31)));const a=[];for(var s=0;s {r.d(t,{Bq:()=>n,Hb:()=>o,oD:()=>i});const n="NRBA",i=144e5,o=18e5},7894:(e,t,r)=>{function n(){return Math.round(performance.now())}r.d(t,{z:()=>n})},7243:(e,t,r)=>{r.d(t,{e:()=>o});var n=r(385),i={};function o(e){if(e in i)return i[e];if(0===(e||"").indexOf("data:"))return{protocol:"data"};let t;var r=n._A?.location,o={};if(n.il)t=document.createElement("a"),t.href=e;else try{t=new URL(e,r.href)}catch(e){return o}o.port=t.port;var a=t.href.split("://");!o.port&&a[1]&&(o.port=a[1].split("/")[0].split("@").pop().split(":")[1]),o.port&&"0"!==o.port||(o.port="https"===a[0]?"443":"80"),o.hostname=t.hostname||r.hostname,o.pathname=t.pathname,o.protocol=a[0],"/"!==o.pathname.charAt(0)&&(o.pathname="/"+o.pathname);var s=!t.protocol||":"===t.protocol||t.protocol===r.protocol,c=t.hostname===r.hostname&&t.port===r.port;return o.sameOrigin=s&&(!t.hostname||c),"/"===o.pathname&&(i[e]=o),o}},50:(e,t,r)=>{function n(e,t){"function"==typeof console.warn&&(console.warn("New Relic: ".concat(e)),t&&console.warn(t))}r.d(t,{Z:()=>n})},2587:(e,t,r)=>{r.d(t,{N:()=>c,T:()=>u});var n=r(2177),i=r(5546),o=r(8e3),a=r(3325);const s={stn:[a.D.sessionTrace],err:[a.D.jserrors,a.D.metrics],ins:[a.D.pageAction],spa:[a.D.spa],sr:[a.D.sessionReplay,a.D.sessionTrace]};function c(e,t){const r=n.ee.get(t);e&&"object"==typeof e&&(Object.entries(e).forEach((e=>{let[t,n]=e;void 0===u[t]&&(s[t]?s[t].forEach((e=>{n?(0,i.p)("feat-"+t,[],void 0,e,r):(0,i.p)("block-"+t,[],void 0,e,r),(0,i.p)("rumresp-"+t,[Boolean(n)],void 0,e,r)})):n&&(0,i.p)("feat-"+t,[],void 0,void 0,r),u[t]=Boolean(n))})),Object.keys(s).forEach((e=>{void 0===u[e]&&(s[e]?.forEach((t=>(0,i.p)("rumresp-"+e,[!1],void 0,t,r))),u[e]=!1)})),(0,o.L)(t,a.D.pageViewEvent))}const u={}},2210:(e,t,r)=>{r.d(t,{X:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},1284:(e,t,r)=>{r.d(t,{D:()=>n});const n=(e,t)=>Object.entries(e||{}).map((e=>{let[r,n]=e;return t(r,n)}))},4351:(e,t,r)=>{r.d(t,{P:()=>o});var n=r(2177);const i=()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}};function o(e){try{return JSON.stringify(e,i())}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}}}},3960:(e,t,r)=>{r.d(t,{K:()=>a,b:()=>o});var n=r(3239);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.bP)("load",e,t)}function a(e){if(i())return e();(0,n.iz)("DOMContentLoaded",e)}},8632:(e,t,r)=>{r.d(t,{EZ:()=>u,Qy:()=>c,ce:()=>o,fP:()=>a,gG:()=>d,mF:()=>s});var n=r(7894),i=r(385);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return i._A.NREUM||(i._A.NREUM={}),void 0===i._A.newrelic&&(i._A.newrelic=i._A.NREUM),i._A.NREUM}function s(){let e=a();return e.o||(e.o={ST:i._A.setTimeout,SI:i._A.setImmediate,CT:i._A.clearTimeout,XHR:i._A.XMLHttpRequest,REQ:i._A.Request,EV:i._A.Event,PR:i._A.Promise,MO:i._A.MutationObserver,FETCH:i._A.fetch}),e}function c(e,t,r){let i=a();const o=i.initializedAgents||{},s=o[e]||{};return Object.keys(s).length||(s.initializedAt={ms:(0,n.z)(),date:new Date}),i.initializedAgents={...o,[e]:{...s,[r]:t}},i}function u(e,t){a()[e]=t}function d(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},7956:(e,t,r)=>{r.d(t,{N:()=>i});var n=r(3239);function i(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0;return void(0,n.iz)("visibilitychange",(function(){if(t)return void("hidden"==document.visibilityState&&e());e(document.visibilityState)}),r,i)}},1214:(e,t,r)=>{r.d(t,{em:()=>v,u5:()=>N,QU:()=>S,_L:()=>I,Gm:()=>L,Lg:()=>M,gy:()=>U,BV:()=>Q,Kf:()=>ee});var n=r(2177);const i="nr@original";var o=Object.prototype.hasOwnProperty,a=!1;function s(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");var a,s,c,u="-"===n.charAt(0);for(c=0;c 2?n-2:0),o=2;o {r(A[T],e,w),r(E[T],e,w)})),r(l._A,"fetch",y),t.on(y+"end",(function(e,r){var n=this;if(r){var i=r.headers.get("content-length");null!==i&&(n.rxSize=i),t.emit(y+"done",[null,r],n)}else t.emit(y+"done",[e],n)})),t}const O={},j=["pushState","replaceState"];function S(e){const t=function(e){return(e||n.ee).get("history")}(e);return!l.il||O[t.debugId]++||(O[t.debugId]=1,s(t).inPlace(window.history,j,"-")),t}var P=r(3239);const C={},R=["appendChild","insertBefore","replaceChild"];function I(e){const t=function(e){return(e||n.ee).get("jsonp")}(e);if(!l.il||C[t.debugId])return t;C[t.debugId]=!0;var r=s(t),i=/[?&](?:callback|cb)=([^&#]+)/,o=/(.*)\.([^.]+)/,a=/^(\w+)(\.|$)(.*)$/;function c(e,t){var r=e.match(a),n=r[1],i=r[3];return i?c(i,t[n]):t[n]}return r.inPlace(Node.prototype,R,"dom-"),t.on("dom-start",(function(e){!function(e){if(!e||"string"!=typeof e.nodeName||"script"!==e.nodeName.toLowerCase())return;if("function"!=typeof e.addEventListener)return;var n=(a=e.src,s=a.match(i),s?s[1]:null);var a,s;if(!n)return;var u=function(e){var t=e.match(o);if(t&&t.length>=3)return{key:t[2],parent:c(t[1],window)};return{key:e,parent:window}}(n);if("function"!=typeof u.parent[u.key])return;var d={};function f(){t.emit("jsonp-end",[],d),e.removeEventListener("load",f,(0,P.m$)(!1)),e.removeEventListener("error",l,(0,P.m$)(!1))}function l(){t.emit("jsonp-error",[],d),t.emit("jsonp-end",[],d),e.removeEventListener("load",f,(0,P.m$)(!1)),e.removeEventListener("error",l,(0,P.m$)(!1))}r.inPlace(u.parent,[u.key],"cb-",d),e.addEventListener("load",f,(0,P.m$)(!1)),e.addEventListener("error",l,(0,P.m$)(!1)),t.emit("new-jsonp",[e.src],d)}(e[0])})),t}var k=r(5763);const H={};function L(e){const t=function(e){return(e||n.ee).get("mutation")}(e);if(!l.il||H[t.debugId])return t;H[t.debugId]=!0;var r=s(t),i=k.Yu.MO;return i&&(window.MutationObserver=function(e){return this instanceof i?new i(r(e,"fn-")):i.apply(this,arguments)},MutationObserver.prototype=i.prototype),t}const z={};function M(e){const t=function(e){return(e||n.ee).get("promise")}(e);if(z[t.debugId])return t;z[t.debugId]=!0;var r=n.c,o=s(t),a=k.Yu.PR;return a&&function(){function e(r){var n=t.context(),i=o(r,"executor-",n,null,!1);const s=Reflect.construct(a,[i],e);return t.context(s).getCtx=function(){return n},s}l._A.Promise=e,Object.defineProperty(e,"name",{value:"Promise"}),e.toString=function(){return a.toString()},Object.setPrototypeOf(e,a),["all","race"].forEach((function(r){const n=a[r];e[r]=function(e){let i=!1;[...e||[]].forEach((e=>{this.resolve(e).then(a("all"===r),a(!1))}));const o=n.apply(this,arguments);return o;function a(e){return function(){t.emit("propagate",[null,!i],o,!1,!1),i=i||!e}}}})),["resolve","reject"].forEach((function(r){const n=a[r];e[r]=function(e){const r=n.apply(this,arguments);return e!==r&&t.emit("propagate",[e,!0],r,!1,!1),r}})),e.prototype=a.prototype;const n=a.prototype.then;a.prototype.then=function(){var e=this,i=r(e);i.promise=e;for(var a=arguments.length,s=new Array(a),c=0;c e())),t};function m(e,t){i.inPlace(t,["onreadystatechange"],"fn-",E)}function b(){var e=this,t=r.context(e);e.readyState>3&&!t.resolved&&(t.resolved=!0,r.emit("xhr-resolved",[],e)),i.inPlace(e,f,"fn-",E)}if(function(e,t){for(var r in e)t[r]=e[r]}(o,p),p.prototype=o.prototype,i.inPlace(p.prototype,J,"-xhr-",E),r.on("send-xhr-start",(function(e,t){m(e,t),function(e){h.push(e),a&&(y?y.then(A):u?u(A):(w=-w,x.data=w))}(t)})),r.on("open-xhr-start",m),a){var y=c&&c.resolve();if(!u&&!c){var w=1,x=document.createTextNode(w);new a(A).observe(x,{characterData:!0})}}else t.on("fn-end",(function(e){e[0]&&e[0].type===d||A()}));function A(){for(var e=0;e {r.d(t,{t:()=>n});const n=r(3325).D.ajax},6660:(e,t,r)=>{r.d(t,{A:()=>i,t:()=>n});const n=r(3325).D.jserrors,i="nr@seenError"},3081:(e,t,r)=>{r.d(t,{gF:()=>o,mY:()=>i,t9:()=>n,vz:()=>s,xS:()=>a});const n=r(3325).D.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},4649:(e,t,r)=>{r.d(t,{t:()=>n});const n=r(3325).D.pageAction},7633:(e,t,r)=>{r.d(t,{Dz:()=>i,OJ:()=>a,qw:()=>o,t9:()=>n});const n=r(3325).D.pageViewEvent,i="firstbyte",o="domcontent",a="windowload"},9251:(e,t,r)=>{r.d(t,{t:()=>n});const n=r(3325).D.pageViewTiming},3614:(e,t,r)=>{r.d(t,{BST_RESOURCE:()=>i,END:()=>s,FEATURE_NAME:()=>n,FN_END:()=>u,FN_START:()=>c,PUSH_STATE:()=>d,RESOURCE:()=>o,START:()=>a});const n=r(3325).D.sessionTrace,i="bstResource",o="resource",a="-start",s="-end",c="fn"+a,u="fn"+s,d="pushState"},7836:(e,t,r)=>{r.d(t,{BODY:()=>A,CB_END:()=>E,CB_START:()=>u,END:()=>x,FEATURE_NAME:()=>i,FETCH:()=>_,FETCH_BODY:()=>v,FETCH_DONE:()=>m,FETCH_START:()=>p,FN_END:()=>c,FN_START:()=>s,INTERACTION:()=>l,INTERACTION_API:()=>d,INTERACTION_EVENTS:()=>o,JSONP_END:()=>b,JSONP_NODE:()=>g,JS_TIME:()=>T,MAX_TIMER_BUDGET:()=>a,REMAINING:()=>f,SPA_NODE:()=>h,START:()=>w,originalSetTimeout:()=>y});var n=r(5763);const i=r(3325).D.spa,o=["click","submit","keypress","keydown","keyup","change"],a=999,s="fn-start",c="fn-end",u="cb-start",d="api-ixn-",f="remaining",l="interaction",h="spaNode",g="jsonpNode",p="fetch-start",m="fetch-done",v="fetch-body-",b="jsonp-end",y=n.Yu.ST,w="-start",x="-end",A="-body",E="cb"+x,T="jsTime",_="fetch"},5938:(e,t,r)=>{r.d(t,{W:()=>o});var n=r(5763),i=r(2177);class o{constructor(e,t,r){this.agentIdentifier=e,this.aggregator=t,this.ee=i.ee.get(e,(0,n.OP)(this.agentIdentifier).isolatedBacklog),this.featureName=r,this.blocked=!1}}},9144:(e,t,r)=>{r.d(t,{j:()=>m});var n=r(3325),i=r(5763),o=r(5546),a=r(2177),s=r(7894),c=r(8e3),u=r(3960),d=r(385),f=r(50),l=r(3081),h=r(8632);function g(){const e=(0,h.gG)();["setErrorHandler","finished","addToTrace","inlineHit","addRelease","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId"].forEach((t=>{e[t]=function(){for(var r=arguments.length,n=new Array(r),i=0;i 1?r-1:0),i=1;i {e.exposed&&e.api[t]&&o.push(e.api[t](...n))})),o.length>1?o:o[0]}(t,...n)}}))}var p=r(2587);function m(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},m=arguments.length>2?arguments[2]:void 0,v=arguments.length>3?arguments[3]:void 0,{init:b,info:y,loader_config:w,runtime:x={loaderType:m},exposed:A=!0}=t;const E=(0,h.gG)();y||(b=E.init,y=E.info,w=E.loader_config),(0,i.Dg)(e,b||{}),(0,i.GE)(e,w||{}),(0,i.sU)(e,x),y.jsAttributes??={},d.v6&&(y.jsAttributes.isWorker=!0),(0,i.CX)(e,y),g();const T=function(e,t){t||(0,c.R)(e,"api");const h={};var g=a.ee.get(e),p=g.get("tracer"),m="api-",v=m+"ixn-";function b(t,r,n,o){const a=(0,i.C5)(e);return null===r?delete a.jsAttributes[t]:(0,i.CX)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),x(m,n,!0,o||null===r?"session":void 0)(t,r)}function y(){}["setErrorHandler","finished","addToTrace","inlineHit","addRelease"].forEach((e=>h[e]=x(m,e,!0,"api"))),h.addPageAction=x(m,"addPageAction",!0,n.D.pageAction),h.setCurrentRouteName=x(m,"routeName",!0,n.D.spa),h.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,i.OP)(e).customTransaction=(r||"http://custom.transaction")+t,x(m,"setPageViewName",!0)()},h.setCustomAttribute=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof e){if(["string","number"].includes(typeof t)||null===t)return b(e,t,"setCustomAttribute",r);(0,f.Z)("Failed to execute setCustomAttribute.\nNon-null value must be a string or number type, but a type of was provided."))}else(0,f.Z)("Failed to execute setCustomAttribute.\nName must be a string type, but a type of was provided."))},h.setUserId=function(e){if("string"==typeof e||null===e)return b("enduser.id",e,"setUserId",!0);(0,f.Z)("Failed to execute setUserId.\nNon-null value must be a string type, but a type of was provided."))},h.interaction=function(){return(new y).get()};var w=y.prototype={createTracer:function(e,t){var r={},i=this,a="function"==typeof t;return(0,o.p)(v+"tracer",[(0,s.z)(),e,r],i,n.D.spa,g),function(){if(p.emit((a?"":"no-")+"fn-start",[(0,s.z)(),i,a],r),a)try{return t.apply(this,arguments)}catch(e){throw p.emit("fn-err",[arguments,this,"string"==typeof e?new Error(e):e],r),e}finally{p.emit("fn-end",[(0,s.z)()],r)}}}};function x(e,t,r,i){return function(){return(0,o.p)(l.xS,["API/"+t+"/called"],void 0,n.D.metrics,g),i&&(0,o.p)(e+t,[(0,s.z)(),...arguments],r?null:this,i,g),r?void 0:this}}function A(){r.e(439).then(r.bind(r,7438)).then((t=>{let{setAPI:r}=t;r(e),(0,c.L)(e,"api")})).catch((()=>(0,f.Z)("Downloading runtime APIs failed...")))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{w[e]=x(v,e,void 0,n.D.spa)})),h.noticeError=function(e,t){"string"==typeof e&&(e=new Error(e)),(0,o.p)(l.xS,["API/noticeError/called"],void 0,n.D.metrics,g),(0,o.p)("err",[e,(0,s.z)(),!1,t],void 0,n.D.jserrors,g)},d.il?(0,u.b)((()=>A()),!0):A(),h}(e,v);return(0,h.Qy)(e,T,"api"),(0,h.Qy)(e,A,"exposed"),(0,h.EZ)("activatedFeatures",p.T),T}},3325:(e,t,r)=>{r.d(t,{D:()=>n,p:()=>i});const n={ajax:"ajax",jserrors:"jserrors",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",spa:"spa"},i={[n.pageViewEvent]:1,[n.pageViewTiming]:2,[n.metrics]:3,[n.jserrors]:4,[n.ajax]:5,[n.sessionTrace]:6,[n.pageAction]:7,[n.spa]:8,[n.sessionReplay]:9}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>(({78:"page_action-aggregate",147:"metrics-aggregate",242:"session-manager",317:"jserrors-aggregate",348:"page_view_timing-aggregate",412:"lazy-feature-loader",439:"async-api",538:"recorder",590:"session_replay-aggregate",675:"compressor",733:"session_trace-aggregate",786:"page_view_event-aggregate",873:"spa-aggregate",898:"ajax-aggregate"}[e]||e)+"."+{78:"ac76d497",147:"3dc53903",148:"1a20d5fe",242:"2a64278a",317:"49e41428",348:"bd6de33a",412:"2f55ce66",439:"30bd804e",538:"1b18459f",590:"cf0efb30",675:"ae9f91a8",733:"83105561",786:"06482edd",860:"03a8b7a5",873:"e6b09d52",898:"998ef92b"}[e]+"-1.236.0.min.js"),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d {s.onerror=s.onload=null,clearTimeout(h);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},h=setTimeout(l.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=l.bind(null,s.onerror),s.onload=l.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.j=364,i.p="https://js-agent.newrelic.com/",(()=>{var e={364:0,953:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u {i.r(o);var e=i(3325),t=i(5763);const r=Object.values(e.D);function n(e){const n={};return r.forEach((r=>{n[r]=function(e,r){return!1!==(0,t.Mt)(r,"".concat(e,".enabled"))}(r,e)})),n}var a=i(9144);var s=i(5546),c=i(385),u=i(8e3),d=i(5938),f=i(3960),l=i(50);class h extends d.W{constructor(e,t,r){let n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];super(e,t,r),this.auto=n,this.abortHandler,this.featAggregate,this.onAggregateImported,n&&(0,u.R)(e,r)}importAggregator(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this.featAggregate||!this.auto)return;const r=c.il&&!0===(0,t.Mt)(this.agentIdentifier,"privacy.cookies_enabled");let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let t;try{if(r){const{setupAgentSession:e}=await Promise.all([i.e(860),i.e(242)]).then(i.bind(i,3228));t=e(this.agentIdentifier)}}catch(e){(0,l.Z)("A problem occurred when starting up session manager. This page will not start or extend any session.",e)}try{if(!this.shouldImportAgg(this.featureName,t))return void(0,u.L)(this.agentIdentifier,this.featureName);const{lazyFeatureLoader:r}=await i.e(412).then(i.bind(i,8582)),{Aggregate:o}=await r(this.featureName,"aggregate");this.featAggregate=new o(this.agentIdentifier,this.aggregator,e),n(!0)}catch(e){(0,l.Z)("Downloading and initializing ".concat(this.featureName," failed..."),e),this.abortHandler?.(),n(!1)}};c.il?(0,f.b)((()=>o()),!0):o()}shouldImportAgg(r,n){return r!==e.D.sessionReplay||!1!==(0,t.Mt)(this.agentIdentifier,"session_trace.enabled")&&(!!n?.isNew||!!n?.state.sessionReplay)}}var g=i(7633),p=i(7894);class m extends h{static featureName=g.t9;constructor(r,n){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(super(r,n,g.t9,i),("undefined"==typeof PerformanceNavigationTiming||c.Tt)&&"undefined"!=typeof PerformanceTiming){const n=(0,t.OP)(r);n[g.Dz]=Math.max(Date.now()-n.offset,0),(0,f.K)((()=>n[g.qw]=Math.max((0,p.z)()-n[g.Dz],0))),(0,f.b)((()=>{const t=(0,p.z)();n[g.OJ]=Math.max(t-n[g.Dz],0),(0,s.p)("timing",["load",t],void 0,e.D.pageViewTiming,this.ee)}))}this.importAggregator()}}var v=i(1117),b=i(1284);class y extends v.w{constructor(e){super(e),this.aggregatedData={}}store(e,t,r,n,i){var o=this.getBucket(e,t,r,i);return o.metrics=function(e,t){t||(t={count:0});return t.count+=1,(0,b.D)(e,(function(e,r){t[e]=w(r,t[e])})),t}(n,o.metrics),o}merge(e,t,r,n,i){var o=this.getBucket(e,t,n,i);if(o.metrics){var a=o.metrics;a.count+=r.count,(0,b.D)(r,(function(e,t){if("count"!==e){var n=a[e],i=r[e];i&&!i.c?a[e]=w(i.t,n):a[e]=function(e,t){if(!t)return e;t.c||(t=x(t.t));return t.min=Math.min(e.min,t.min),t.max=Math.max(e.max,t.max),t.t+=e.t,t.sos+=e.sos,t.c+=e.c,t}(i,a[e])}}))}else o.metrics=r}storeMetric(e,t,r,n){var i=this.getBucket(e,t,r);return i.stats=w(n,i.stats),i}getBucket(e,t,r,n){this.aggregatedData[e]||(this.aggregatedData[e]={});var i=this.aggregatedData[e][t];return i||(i=this.aggregatedData[e][t]={params:r||{}},n&&(i.custom=n)),i}get(e,t){return t?this.aggregatedData[e]&&this.aggregatedData[e][t]:this.aggregatedData[e]}take(e){for(var t={},r="",n=!1,i=0;i t.max&&(t.max=e),e 2&&void 0!==arguments[2])||arguments[2];super(e,r,j.t,n),c.il&&((0,t.OP)(e).initHidden=Boolean("hidden"===document.visibilityState),(0,N.N)((()=>(0,s.p)("docHidden",[(0,p.z)()],void 0,j.t,this.ee)),!0),(0,O.bP)("pagehide",(()=>(0,s.p)("winPagehide",[(0,p.z)()],void 0,j.t,this.ee))),this.importAggregator())}}var P=i(3081);class C extends h{static featureName=P.t9;constructor(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];super(e,t,P.t9,r),this.importAggregator()}}var R,I=i(2210),k=i(1214),H=i(2177),L={};try{R=localStorage.getItem("__nr_flags").split(","),console&&"function"==typeof console.log&&(L.console=!0,-1!==R.indexOf("dev")&&(L.dev=!0),-1!==R.indexOf("nr_dev")&&(L.nrDev=!0))}catch(e){}function z(e){try{L.console&&z(e)}catch(e){}}L.nrDev&&H.ee.on("internal-error",(function(e){z(e.stack)})),L.dev&&H.ee.on("fn-err",(function(e,t,r){z(r.stack)})),L.dev&&(z("NR AGENT IN DEVELOPMENT MODE"),z("flags: "+(0,b.D)(L,(function(e,t){return e})).join(", ")));var M=i(6660);class B extends h{static featureName=M.t;constructor(r,n){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];super(r,n,M.t,i),this.skipNext=0;try{this.removeOnAbort=new AbortController}catch(e){}const o=this;o.ee.on("fn-start",(function(e,t,r){o.abortHandler&&(o.skipNext+=1)})),o.ee.on("fn-err",(function(t,r,n){o.abortHandler&&!n[M.A]&&((0,I.X)(n,M.A,(function(){return!0})),this.thrown=!0,(0,s.p)("err",[n,(0,p.z)()],void 0,e.D.jserrors,o.ee))})),o.ee.on("fn-end",(function(){o.abortHandler&&!this.thrown&&o.skipNext>0&&(o.skipNext-=1)})),o.ee.on("internal-error",(function(t){(0,s.p)("ierr",[t,(0,p.z)(),!0],void 0,e.D.jserrors,o.ee)})),this.origOnerror=c._A.onerror,c._A.onerror=this.onerrorHandler.bind(this),c._A.addEventListener("unhandledrejection",(t=>{const r=function(e){let t="Unhandled Promise Rejection: ";if(e instanceof Error)try{return e.message=t+e.message,e}catch(t){return e}if(void 0===e)return new Error(t);try{return new Error(t+(0,D.P)(e))}catch(e){return new Error(t)}}(t.reason);(0,s.p)("err",[r,(0,p.z)(),!1,{unhandledPromiseRejection:1}],void 0,e.D.jserrors,this.ee)}),(0,O.m$)(!1,this.removeOnAbort?.signal)),(0,k.gy)(this.ee),(0,k.BV)(this.ee),(0,k.em)(this.ee),(0,t.OP)(r).xhrWrappable&&(0,k.Kf)(this.ee),this.abortHandler=this.#e,this.importAggregator()}#e(){this.removeOnAbort?.abort(),this.abortHandler=void 0}onerrorHandler(t,r,n,i,o){"function"==typeof this.origOnerror&&this.origOnerror(...arguments);try{this.skipNext?this.skipNext-=1:(0,s.p)("err",[o||new F(t,r,n),(0,p.z)()],void 0,e.D.jserrors,this.ee)}catch(t){try{(0,s.p)("ierr",[t,(0,p.z)(),!0],void 0,e.D.jserrors,this.ee)}catch(e){}}return!1}}function F(e,t,r){this.message=e||"Uncaught error with no additional information",this.sourceURL=t,this.line=r}let U=1;const q="nr@id";function G(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===c._A?0:(0,I.X)(e,q,(function(){return U++}))}function V(e){if("string"==typeof e&&e.length)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,D.P)(e).length}catch(e){return}}}var X=i(7243);class W{constructor(e){this.agentIdentifier=e,this.generateTracePayload=this.generateTracePayload.bind(this),this.shouldGenerateTrace=this.shouldGenerateTrace.bind(this)}generateTracePayload(e){if(!this.shouldGenerateTrace(e))return null;var r=(0,t.DL)(this.agentIdentifier);if(!r)return null;var n=(r.accountID||"").toString()||null,i=(r.agentID||"").toString()||null,o=(r.trustKey||"").toString()||null;if(!n||!i)return null;var a=(0,_.M)(),s=(0,_.Ht)(),c=Date.now(),u={spanId:a,traceId:s,timestamp:c};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(u.traceContextParentHeader=this.generateTraceContextParentHeader(a,s),u.traceContextStateHeader=this.generateTraceContextStateHeader(a,c,n,i,o)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(u.newrelicHeader=this.generateTraceHeader(a,s,c,n,i,o)),u}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,o){if(!("function"==typeof c._A?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return o&&n!==o&&(a.d.tk=o),btoa((0,D.P)(a))}shouldGenerateTrace(e){return this.isDtEnabled()&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var r=!1,n={};if((0,t.Mt)(this.agentIdentifier,"distributed_tracing")&&(n=(0,t.P_)(this.agentIdentifier).distributed_tracing),e.sameOrigin)r=!0;else if(n.allowed_origins instanceof Array)for(var i=0;i 2&&void 0!==arguments[2])||arguments[2];super(r,n,Z.t,i),(0,t.OP)(r).xhrWrappable&&(this.dt=new W(r),this.handler=(e,t,r,n)=>(0,s.p)(e,t,r,n,this.ee),(0,k.u5)(this.ee),(0,k.Kf)(this.ee),function(r,n,i,o){function a(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=E,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},e.addEventListener("load",(function(r){_(t,e)}),(0,O.m$)(!1)),c.IF||e.addEventListener("progress",(function(e){t.lastSize=e.loaded}),(0,O.m$)(!1))}function s(e){this.params={method:e[0]},T(this,e[1]),this.metrics={}}function u(e,n){var i=(0,t.DL)(r);i.xpid&&this.sameOrigin&&n.setRequestHeader("X-NewRelic-ID",i.xpid);var a=o.generateTracePayload(this.parsedOrigin);if(a){var s=!1;a.newrelicHeader&&(n.setRequestHeader("newrelic",a.newrelicHeader),s=!0),a.traceContextParentHeader&&(n.setRequestHeader("traceparent",a.traceContextParentHeader),a.traceContextStateHeader&&n.setRequestHeader("tracestate",a.traceContextStateHeader),s=!0),s&&(this.dt=a)}}function d(e,t){var r=this.metrics,i=e[0],o=this;if(r&&i){var a=V(i);a&&(r.txSize=a)}this.startTime=(0,p.z)(),this.listener=function(e){try{"abort"!==e.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==e.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof t.onload)&&"function"==typeof o.end)&&o.end(t)}catch(e){try{n.emit("internal-error",[e])}catch(e){}}};for(var s=0;s 1?e[1]=i:e.push(i)}else e[0]&&e[0].headers&&s(e[0].headers,n)&&(this.dt=n);function s(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function x(e,t){this.params={},this.metrics={},this.startTime=(0,p.z)(),this.dt=t,e.length>=1&&(this.target=e[0]),e.length>=2&&(this.opts=e[1]);var r,n=this.opts||{},i=this.target;"string"==typeof i?r=i:"object"==typeof i&&i instanceof Y?r=i.url:c._A?.URL&&"object"==typeof i&&i instanceof URL&&(r=i.href),T(this,r);var o=(""+(i&&i instanceof Y&&i.method||n.method||"GET")).toUpperCase();this.params.method=o,this.txSize=V(n.body)||0}function A(t,r){var n;this.endTime=(0,p.z)(),this.params||(this.params={}),this.params.status=r?r.status:0,"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);var o={txSize:this.txSize,rxSize:n,duration:(0,p.z)()-this.startTime};i("xhr",[this.params,o,this.startTime,this.endTime,"fetch"],this,e.D.ajax)}function E(t){var r=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(var o=0;o 2&&void 0!==arguments[2])||arguments[2];super(e,t,we.t,r),this.importAggregator()}}new class{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,_.ky)(16);c._A?(this.agentIdentifier=t,this.sharedAggregator=new y({agentIdentifier:this.agentIdentifier}),this.features={},this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(m),Object.assign(this,(0,a.j)(this.agentIdentifier,e,e.loaderType||"agent")),this.start()):(0,l.Z)("Failed to initial the agent. Could not determine the runtime environment.")}get config(){return{info:(0,t.C5)(this.agentIdentifier),init:(0,t.P_)(this.agentIdentifier),loader_config:(0,t.DL)(this.agentIdentifier),runtime:(0,t.OP)(this.agentIdentifier)}}start(){const t="features";try{const r=n(this.agentIdentifier),i=[...this.desiredFeatures];i.sort(((t,r)=>e.p[t.featureName]-e.p[r.featureName])),i.forEach((t=>{if(r[t.featureName]||t.featureName===e.D.pageViewEvent){const n=function(t){switch(t){case e.D.ajax:return[e.D.jserrors];case e.D.sessionTrace:return[e.D.ajax,e.D.pageViewEvent];case e.D.sessionReplay:return[e.D.sessionTrace];case e.D.pageViewTiming:return[e.D.pageViewEvent];default:return[]}}(t.featureName);n.every((e=>r[e]))||(0,l.Z)("".concat(t.featureName," is enabled but one or more dependent features has been disabled (").concat((0,D.P)(n),"). This may cause unintended consequences or missing data...")),this.features[t.featureName]=new t(this.agentIdentifier,this.sharedAggregator)}})),(0,T.Qy)(this.agentIdentifier,this.features,t)}catch(e){(0,l.Z)("Failed to initialize all enabled instrument classes (agent aborted) -",e);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,T.fP)();return delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.[t],delete this.sharedAggregator,r.ee?.abort(),delete r.ee?.get(this.agentIdentifier),!1}}}({features:[J,m,S,class extends h{static featureName=oe;constructor(t,r){if(super(t,r,oe,!(arguments.length>2&&void 0!==arguments[2])||arguments[2]),!c.il)return;const n=this.ee;let i;(0,k.QU)(n),this.eventsEE=(0,k.em)(n),this.eventsEE.on(se,(function(e,t){this.bstStart=(0,p.z)()})),this.eventsEE.on(ae,(function(t,r){(0,s.p)("bst",[t[0],r,this.bstStart,(0,p.z)()],void 0,e.D.sessionTrace,n)})),n.on(ce+ne,(function(e){this.time=(0,p.z)(),this.startPath=location.pathname+location.hash})),n.on(ce+ie,(function(t){(0,s.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,e.D.sessionTrace,n)}));try{i=new PerformanceObserver((t=>{const r=t.getEntries();(0,s.p)(te,[r],void 0,e.D.sessionTrace,n)})),i.observe({type:re,buffered:!0})}catch(e){}this.importAggregator({resourceObserver:i})}},C,xe,B,class extends h{static featureName=de;constructor(e,r){if(super(e,r,de,!(arguments.length>2&&void 0!==arguments[2])||arguments[2]),!c.il)return;if(!(0,t.OP)(e).xhrWrappable)return;try{this.removeOnAbort=new AbortController}catch(e){}let n,i=0;const o=this.ee.get("tracer"),a=(0,k._L)(this.ee),s=(0,k.Lg)(this.ee),u=(0,k.BV)(this.ee),d=(0,k.Kf)(this.ee),f=this.ee.get("events"),l=(0,k.u5)(this.ee),h=(0,k.QU)(this.ee),g=(0,k.Gm)(this.ee);function m(e,t){h.emit("newURL",[""+window.location,t])}function v(){i++,n=window.location.hash,this[ve]=(0,p.z)()}function b(){i--,window.location.hash!==n&&m(0,!0);var e=(0,p.z)();this[pe]=~~this[pe]+e-this[ve],this[ye]=e}function y(e,t){e.on(t,(function(){this[t]=(0,p.z)()}))}this.ee.on(ve,v),s.on(be,v),a.on(be,v),this.ee.on(ye,b),s.on(ge,b),a.on(ge,b),this.ee.buffer([ve,ye,"xhr-resolved"],this.featureName),f.buffer([ve],this.featureName),u.buffer(["setTimeout"+le,"clearTimeout"+fe,ve],this.featureName),d.buffer([ve,"new-xhr","send-xhr"+fe],this.featureName),l.buffer([me+fe,me+"-done",me+he+fe,me+he+le],this.featureName),h.buffer(["newURL"],this.featureName),g.buffer([ve],this.featureName),s.buffer(["propagate",be,ge,"executor-err","resolve"+fe],this.featureName),o.buffer([ve,"no-"+ve],this.featureName),a.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"],this.featureName),y(l,me+fe),y(l,me+"-done"),y(a,"new-jsonp"),y(a,"jsonp-end"),y(a,"cb-start"),h.on("pushState-end",m),h.on("replaceState-end",m),window.addEventListener("hashchange",m,(0,O.m$)(!0,this.removeOnAbort?.signal)),window.addEventListener("load",m,(0,O.m$)(!0,this.removeOnAbort?.signal)),window.addEventListener("popstate",(function(){m(0,i>1)}),(0,O.m$)(!0,this.removeOnAbort?.signal)),this.abortHandler=this.#e,this.importAggregator()}#e(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}],loaderType:"spa"})})(),window.NRBA=o})(); window.jQuery || document.write(' ') CKEDITOR_BASEPATH='https://f1000research.com/js/vendor/ckeditor/' window.reactTheme = 'research'; window.MathJax = { CommonHTML: { linebreaks: { automatic: true } }, 'HTML-CSS': { linebreaks: { automatic: true } }, SVG: { linebreaks: { automatic: true } }, AuthorInit: function() { MathJax.Hub.Register.MessageHook('End Process', function () { let timeout = false; // holder for timeout id const delay = 250; // delay after event is "complete" to run callback const reflowMath = function() { const dispFormulas = document.querySelectorAll('.disp-formula.panel'); if (!dispFormulas) { return; } for (const dispFormula of dispFormulas) { const child = dispFormula.querySelector('.MathJax_Preview').nextSibling.firstChild; const isMultiline = MathJax.Hub.getAllJax(dispFormula)[0].root.isMultiline; if (dispFormula.offsetWidth < child.offsetWidth || isMultiline) { MathJax.Hub.Queue(['Rerender', MathJax.Hub, dispFormula]); } } }; window.addEventListener('resize', function() { clearTimeout(timeout); // clear the timeout timeout = setTimeout(reflowMath, delay); // start timing for event "completion" }); }); }, }; if (window.location.hash == '#_=_'){ window.location = window.location.href.split('#')[0] } !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function() {n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)} ;if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '1641728616063202'); fbq('track', "PixelInitialized", {}); (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:2318163,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); search file_upload Submit your research search menu close search Browse Gateways & Collections How to Publish Submit your Research My Submissions Article Guidelines Article Guidelines (New Versions) Open Data, Software and Code Guidelines Open Data and Accessible Source Materials Guidelines (HSS) Open Data, Software and Code Guidelines (PSE) Prepublication Checks Production Process Posters and Slides Guidelines Document Guidelines Article Processing Charges Peer Review Finding Article Reviewers About How it Works For Reviewers Our Advisors Policies Glossary FAQs For Developers Newsroom Contact My Research Submissions Content and Tracking Alerts My Details Sign In file_upload Submit your research { "@context": "https://schema.org", "@type": "ScholarlyArticle", "mainEntityOfPage": { "@type": "WebPage", "@id": "https://f1000research.com/articles/14-341" }, "headline": "Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm", "datePublished": "2025-03-27T17:18:53", "dateModified": "2025-05-27T09:52:38", "author": [ { "@type": "Person", "name": "Srinivasarao Thota" }, { "@type": "Person", "name": "Thulasi Bikku" }, { "@type": "Person", "name": "Rakshitha T" } ], "publisher": { "@type": "Organization", "name": "F1000Research", "logo": { "@type": "ImageObject", "url": "https://f1000research.com/img/AMP/F1000Research_image.png", "height": 480, "width": 60 } }, "image": { "@type": "ImageObject", "url": "https://f1000research.com/img/AMP/F1000Research_image.png", "height": 1200, "width": 150 }, "description": " Background Matrix Chain Multiplication (MCM) is a fundamental problem in computational mathematics and computer science, often encountered in scientific computing, graphics, and machine learning. Traditional MCM optimization techniques use Dynamic Programming (DP) with Memoization to determine the optimal parenthesization for minimizing the number of scalar multiplications. However, standard matrix multiplication still operates in O(n3) time complexity, leading to inefficiencies for large matrices. Methods In this paper, we propose a hybrid optimization technique that integrates Strassen’s algorithm into MCM to further accelerate matrix multiplication. Our approach consists of two key phases: (i) matrix chain order optimization, using a top-down memoized DP approach, we compute the best multiplication sequence, and (ii) hybrid multiplication strategy, we selectively apply Strassen’s algorithm for large matrices (n ≥ 128), reducing the complexity from O(n3) to O(n2.81), while using standard multiplication for smaller matrices to avoid recursive overhead. We evaluate the performance of our hybrid method through computational experiments comparing execution time, memory usage, and numerical accuracy against traditional MCM and Strassen’s standalone multiplication. Results Our results demonstrate that the proposed hybrid method achieves significant speedup (4x–8x improvement) and reduces memory consumption, making it well-suited for large-scale applications. This research opens pathways for further optimizations in parallel computing and GPU-accelerated matrix operations. Conclusion This study presents a hybrid approach to Matrix Chain Multiplication by integrating Strassen’s algorithm, reducing execution time and memory usage. By selectively applying Strassen’s method for large matrices, the proposed technique improves efficiency while preserving accuracy. Future work can focus on parallel computing and GPU acceleration for further optimization. " } { "@context": "http://schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": "1", "item": { "@id": "https://f1000research.com/", "name": "Home" } }, { "@type": "ListItem", "position": "2", "item": { "@id": "https://f1000research.com/browse/articles", "name": "Browse" } }, { "@type": "ListItem", "position": "3", "item": { "@id": "https://f1000research.com/articles/14-341", "name": "Hybrid optimization technique for matrix chain multiplication using..." } } ] } Home Browse Hybrid optimization technique for matrix chain multiplication using... ALL Metrics - Views Downloads Get PDF Get XML Cite How to cite this article Thota S, Bikku T and T R. Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm [version 2; peer review: 4 approved] . F1000Research 2025, 14 :341 ( https://doi.org/10.12688/f1000research.162848.2 ) NOTE: If applicable, it is important to ensure the information in square brackets after the title is included in all citations of this article. Close Copy Citation Details Export Export Citation Sciwheel EndNote Ref. Manager Bibtex ProCite Sente EXPORT Select a format first Track Share ▬ ✚ Research Article Revised Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm [version 2; peer review: 4 approved] Srinivasarao Thota 1 , Thulasi Bikku 2 , Rakshitha T https://orcid.org/0009-0005-4194-1733 3 Srinivasarao Thota 1 , Thulasi Bikku 2 , Rakshitha T https://orcid.org/0009-0005-4194-1733 3 PUBLISHED 27 May 2025 Author details Author details 1 Department of Mathematics, Amrita School of Physical Sciences, Amrita Vishwa Vidyapeetham, Amaravati, Andhra Pradesh, 522503, India 2 Department of Computer Science Engineering, Amrita School of Computing Amaravati, Amrita Vishwa Vidyapeetham, Amaravati, Andhra Pradesh, 522503, India 3 Department of Mathematics, Eritrea Institute of Technology, Abardae, Eritrea Srinivasarao Thota Roles: Conceptualization, Formal Analysis, Methodology, Supervision, Writing – Original Draft Preparation Thulasi Bikku Roles: Investigation, Validation, Visualization, Writing – Review & Editing Rakshitha T Roles: Validation OPEN PEER REVIEW DETAILS REVIEWER STATUS This article is included in the Artificial Intelligence and Machine Learning gateway. Abstract Background Matrix Chain Multiplication (MCM) is a fundamental problem in computational mathematics and computer science, often encountered in scientific computing, graphics, and machine learning. Traditional MCM optimization techniques use Dynamic Programming (DP) with Memoization to determine the optimal parenthesization for minimizing the number of scalar multiplications. However, standard matrix multiplication still operates in O(n 3 ) time complexity, leading to inefficiencies for large matrices. Methods In this paper, we propose a hybrid optimization technique that integrates Strassen’s algorithm into MCM to further accelerate matrix multiplication. Our approach consists of two key phases: (i) matrix chain order optimization, using a top-down memoized DP approach, we compute the best multiplication sequence, and (ii) hybrid multiplication strategy, we selectively apply Strassen’s algorithm for large matrices (n ≥ 128), reducing the complexity from O(n 3 ) to O(n 2.81 ), while using standard multiplication for smaller matrices to avoid recursive overhead. We evaluate the performance of our hybrid method through computational experiments comparing execution time, memory usage, and numerical accuracy against traditional MCM and Strassen’s standalone multiplication. Results Our results demonstrate that the proposed hybrid method achieves significant speedup (4x–8x improvement) and reduces memory consumption, making it well-suited for large-scale applications. This research opens pathways for further optimizations in parallel computing and GPU-accelerated matrix operations. Conclusion This study presents a hybrid approach to Matrix Chain Multiplication by integrating Strassen’s algorithm, reducing execution time and memory usage. By selectively applying Strassen’s method for large matrices, the proposed technique improves efficiency while preserving accuracy. Future work can focus on parallel computing and GPU acceleration for further optimization. READ ALL READ LESS Keywords Matrix Chain Multiplication, Strassen’s Algorithm, Hybrid Optimization, Dynamic Programming, Computational Complexity. Corresponding Author(s) Rakshitha T ( [email protected] ) Close Corresponding author: Rakshitha T Competing interests: No competing interests were disclosed. Grant information: The author(s) declared that no grants were involved in supporting this work. Copyright: © 2025 Thota S et al . This is an open access article distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. How to cite: Thota S, Bikku T and T R. Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm [version 2; peer review: 4 approved] . F1000Research 2025, 14 :341 ( https://doi.org/10.12688/f1000research.162848.2 ) First published: 27 Mar 2025, 14 :341 ( https://doi.org/10.12688/f1000research.162848.1 ) Latest published: 27 May 2025, 14 :341 ( https://doi.org/10.12688/f1000research.162848.2 ) Revised Amendments from Version 1 The revised manuscript addresses the corrections recommended by the reviewers. The Introduction has been expanded to include recent bibliographic references. The Discussion section has been streamlined, with updated citations that more effectively support the interpretation of the results. Additionally, a thorough grammatical review has been conducted to enhance the clarity and coherence of the manuscript. We strongly believe that they have helped to strengthen our paper. The revised manuscript addresses the corrections recommended by the reviewers. The Introduction has been expanded to include recent bibliographic references. The Discussion section has been streamlined, with updated citations that more effectively support the interpretation of the results. Additionally, a thorough grammatical review has been conducted to enhance the clarity and coherence of the manuscript. We strongly believe that they have helped to strengthen our paper. See the authors' detailed response to the review by Rajak Shaik See the authors' detailed response to the review by Tekle Gemechu Dinka See the authors' detailed response to the review by Bharati Ainapure See the authors' detailed response to the review by Kranthi Kumar Singamaneni READ REVIEWER RESPONSES 1. Introduction Matrix multiplication is a cornerstone operation in numerous fields including computer graphics, scientific computing, machine learning, and deep learning. Its importance stems from its widespread applicability in solving systems of linear equations, performing transformations, and training neural networks. While matrix multiplication is conceptually straightforward, the computational complexity associated with multiplying large chains of matrices can become prohibitive. This challenge has led to extensive research into algorithms that minimize the number of scalar multiplications required to compute matrix products, with the Matrix Chain Multiplication (MCM) problem serving as a classic example of such optimization. The Matrix Chain Multiplication problem involves finding the most efficient way to parenthesize a sequence of matrix multiplications so that the total number of scalar operations is minimized. Although the associative property of matrix multiplication allows for different parenthesization orders, the actual computational cost can vary significantly depending on the chosen sequence. The dynamic programming approach to MCM has been a long-standing solution that provides optimal parenthesization in polynomial time by breaking the problem into overlapping subproblems and storing intermediate results to avoid redundant computations. Parallel to these developments, Strassen’s Algorithm emerged as a ground-breaking improvement over the conventional cubic-time matrix multiplication algorithm. Introduced in 1969, Strassen’s Algorithm reduces the complexity of multiplying two square matrices from O( n 3 ) to approximately O( n 2.81 ) by leveraging a divide-and-conquer strategy and performing fewer multiplications at the cost of more additions. Despite being theoretically less intuitive, it has demonstrated practical efficiency, particularly for large matrices, and forms the basis for many high-performance matrix libraries. Matrix Chain Multiplication (MCM) 1 is a fundamental optimization problem in linear algebra and computational mathematics, with applications in machine learning, graphics processing, numerical simulations, and high-performance computing. Given a sequence of matrices, MCM aims to determine the optimal parenthesization that minimizes the number of scalar multiplications. Although matrix multiplication is associative, the order in which matrices are multiplied significantly affects computational efficiency. For an input sequence of matrices A 1 , A 2 , …, A n with dimensions p 0 × p 1 , p 1 × p 2 , …, p n -1 × p n , the goal of MCM is to determine the optimal multiplication order that minimizes the total number of operations Cost = ( p i × p k × p j ) where k represents the optimal split point, i is the starting index of the subchain of matrices (i.e., matrix A i ), and j is the ending index of the subchain of matrices (i.e., matrix A j ). Brute-force approaches to MCM require exploring all possible parenthesizations, leading to an exponential O(2 n ) complexity, making them infeasible for large n. To solve this efficiently, Dynamic Programming (DP) with Memoization is commonly used, reducing the time complexity to O( n 3 ). However, this cubic complexity still presents computational challenges for large matrices, motivating the need for further optimization. 1.1 Motivation for optimization While DP-based MCM determines the best multiplication order, it does not reduce the actual multiplication complexity itself. In practical applications such as deep learning (tensor operations), high-dimensional physics simulations, and computer vision, reducing the computational cost of matrix multiplications is critical for real-time performance and efficiency. Strassen’s algorithm 2 is a well-known technique for improving matrix multiplication efficiency. It reduces the standard O( n 3 ) complexity to O( n 2.81 ) by decomposing matrices into submatrices and performing only 7 recursive multiplications instead of 8. This asymptotic improvement makes Strassen’s method highly effective for large matrices. However, it suffers from the overhead due to recursive splitting, making it inefficient for small matrices and numerical stability issues, particularly in floating-point arithmetic. A direct application of Strassen’s algorithm to MCM is non-trivial, as MCM does not involve direct multiplication but rather determining the multiplication order first. Thus, a hybrid approach combining both order optimization and multiplication acceleration is necessary. 1.2 Hybrid Optimization: Combining MCM and strassen’s algorithm We propose a Hybrid Optimization Technique that integrates MCM with Strassen’s Algorithm to enhance computational efficiency. The key principles of our approach are as follows 1. Optimal Parenthesization Selection (MCM-DP): We use memoized DP to determine the best multiplication sequence, ensuring minimal scalar multiplications. 2. Hybrid Multiplication Strategy: Strassen’s Algorithm is selectively applied to matrix products where n ≥ 128, as Strassen’s overhead is only justified for larger matrices. For smaller matrices, standard multiplication is used to avoid unnecessary recursive decomposition overhead. 3. Space Optimization with Rolling DP Array: Since DP-MCM typically requires O( n 2 ) space, we introduce a rolling DP array to reduce memory usage while maintaining optimal parenthesization results. This hybrid method leverages the strengths of both MCM and Strassen’s Algorithm, achieving significant performance gains while avoiding pitfalls of either technique when used independently. 1.3 Contributions of this research Recent advancements in matrix multiplication have built upon foundational algorithms like Strassen’s, aiming to enhance efficiency and applicability. In, 3 author evaluates recent reinforcement learning-derived matrix multiplication algorithms, comparing them to Strassen’s original method. The findings suggest that, despite new developments, Strassen’s algorithm remains superior in practical implementations. Authors of 4 introduced a novel framework using the Pebbling Game approach to optimize matrix multiplication algorithms. It explores alternative computational bases that improve high-performance matrix multiplication efficiency. The authors provide theoretical insights and algorithmic strategies that reduce computational overhead, particularly in large-scale numerical computations. The authors have discovered various techniques 5 – 11 related to different topics. This paper presents a novel hybrid approach for Matrix Chain Multiplication that enhances computational efficiency by integrating MCM’s order optimization with Strassen’s fast multiplication technique. Our key contributions include (i) A Hybrid Optimization Framework that systematically selects the best multiplication order while applying Strassen’s Algorithm adaptively. (ii) A Theoretical Complexity Analysis, proving that our approach reduces computational overhead compared to traditional O( n 3 ) methods. (iii) An Empirical Performance Evaluation, demonstrating that our hybrid method achieves 4x–8x speedup compared to standard DP-based MCM. (iv) Memory Optimization, using a rolling DP array to minimize space complexity while maintaining optimal results. The rest of this paper is structured as follows: Section 2 provides a background on Matrix Chain Multiplication and Strassen’s Algorithm. Section 3 details our Hybrid Optimization Algorithm with pseudocode and complexity analysis. Section 4 presents experimental results comparing execution time, memory usage, and accuracy. Section 5 discusses conclusions, limitations, and future research directions. 2. Background on matrix chain multiplication and strassen’s algorithm Our research comprises numerical computation-intensive computational experiments and algorithmic executions. For this purpose, we employed Python (version 3.11) as the main programming language, with NumPy (version 1.24) used for matrix operations and numerical computations. TensorFlow (version 2.12) and PyTorch (version 2.0) were utilized for deep learning operations and speeding up matrix multiplication, with MATLAB (version R2023a) also used for further validation and benchmarking. Other libraries such as SciPy (version 1.10), Pandas (version 2.0), OpenMP, and CUDA (version 12.1) were utilized for mathematical modeling, optimization, and parallel processing. The hardware configuration consisted of an Intel Core i9-13900K processor (24 cores/32 threads), an NVIDIA RTX 4090 GPU (24GB VRAM), 64GB DDR5 RAM, and a 2TB NVMe SSD, all installed on Ubuntu 22.04 LTS. Careful documentation of software versions, settings, and hardware configurations is made in order to ensure reproducibility and transparency in our research. In the literature, there are many references on these algorithms, see for example Refs. 12 – 17 for more details. 2.1 Matrix Chain Multiplication (MCM) Matrix Chain Multiplication (MCM) is a well-known optimization problem that determines the most efficient way to multiply a sequence of matrices. Given a chain of matrices A 1 , A 2 , A 3 , …, A n with dimensions p 0 × p 1 , p 1 × p 2 , p 2 × p 3 , …, p n -1 × p n , the goal is to find the optimal parenthesization that minimizes the number of scalar multiplications. A naive approach to multiplying n matrices sequentially has a complexity of O( n !) due to different parenthesization possibilities. 18 However, DP reduces the complexity to O( n 3 ) by storing intermediate results in a cost table. The standard DP recurrence relation for MCM is given as m [ i ] [ j ] = min i ≤ k < j ( m [ i ] [ k ] + m [ k + 1 ] [ j ] + p i − 1 p k p j ) where m [ i, j ] represents the minimum number of scalar multiplications required to multiply matrices from A i to A j . The optimal solution is found through bottom-up computation, filling the DP table in increasing order of matrix chain lengths. 2.2 Strassen’s algorithm for matrix multiplication Strassen’s Algorithm is a divide-and-conquer method 19 that improves upon the classical O( n 3 ) time complexity of matrix multiplication. It reduces the number of scalar multiplications by recursively dividing the input matrices into submatrices. The key insight is that instead of performing eight multiplications as in standard matrix multiplication, Strassen’s method 20 reduces it to seven multiplications using cleverly designed submatrix computations. The recursion follows these steps: • Divide matrices A and B into four equal-sized submatrices: A = [ A 11 A 12 A 21 A 22 ] , B = [ B 11 B 12 B 21 B 22 ] • Compute seven matrix multiplications using Strassen’s formulas: M 1 = ( A 11 + A 22 ) ( B 11 + B 22 ) , M 2 = ( A 21 + A 22 ) B 11 , M 3 = A 11 ( B 12 − B 22 ) , M 4 = A 22 ( B 21 − B 11 ) , M 6 = ( A 21 − A 11 ) ( B 11 + B 12 ) , M 7 = ( A 12 − A 22 ) ( B 21 + B 22 ) . • Combine results to construct the final matrix product C = [ C 11 C 12 C 21 C 22 ] : C 11 = M 1 + M 4 − M 5 + M 7 ; C 12 = M 3 + M 5 C 21 = M 2 + M 4 ; C 22 = M 1 − M 2 + M 3 + M 6 Using this approach, Strassen’s Algorithm reduces matrix multiplication to O( n 2.81 ), making it more efficient for large matrices. 2.3 Combining MCM and strassen’s algorithm MCM focuses on optimizing the order of multiplication, while Strassen’s Algorithm optimizes the multiplication process itself. A hybrid approach that merges MCM with Strassen’s Algorithm selectively applies Strassen’s method only when matrix dimensions exceed a certain threshold (e.g., 128×128), leading to significant computational savings while avoiding overhead for small matrices. 3. Proposed algorithm The hybrid algorithm consists of two main phases: (1) Matrix Chain Order Optimization (MCM-DP). It uses DP with Memoization to determine the optimal parenthesization for matrix multiplication and reduces redundant computations and improves efficiency. (2) Hybrid Multiplication Strategy. Strassen’s Algorithm is applied when matrix dimensions n ≥ 128 to exploit its O( n 2.81 ) complexity. For smaller matrices, standard multiplication is used to avoid Strassen’s recursive overhead. 3.1 Algorithm pseudocode import numpy as np def matrix_chain_order(p): n = len(p) - 1 # Number of matrices m = np.full((n, n), float('inf')) # Cost table s = np.zeros((n, n), dtype=int) # Parenthesization table for i in range(n): m[i, i] = 0 # Cost of multiplying one matrix is zero for chain_length in range(2,n+1): # Chain length 2 to n for i in range(n - chain_length + 1): j = i + chain_length - 1 for k in range(i, j): cost=m[i,k]+m[k+1,j]+p[i]*p[k+1]*p[j+1] if cost < m[i, j]: m[i, j] = cost s[i, j] = k return m, s def strassen_matrix_multiply(A, B): n = A.shape[0] if n == 1: return A * B mid = n // 2 A11, A12, A21, A22 = A[:mid, :mid], A[:mid, mid:], A[mid:, :mid], A[mid:, mid:] B11, B12, B21, B22 = B[:mid, :mid], B[:mid, mid:], B[mid:, :mid], B[mid:, mid:] M1 = strassen_matrix_multiply(A11 + A22, B11 + B22) M2 = strassen_matrix_multiply(A21 + A22, B11) M3 = strassen_matrix_multiply(A11, B12 - B22) M4 = strassen_matrix_multiply(A22, B21 - B11) M5 = strassen_matrix_multiply(A11 + A12, B22) M6 = strassen_matrix_multiply(A21 - A11, B11 + B12) M7 = strassen_matrix_multiply(A12 - A22, B21 + B22) C11 = M1 + M4 - M5 + M7 C12 = M3 + M5 C21 = M2 + M4 C22 = M1 - M2 + M3 + M6 C = np.vstack((np.hstack((C11,C12)),np.hstack((C21,C22)))) return C def hybrid_matrix_chain_multiplication(p, matrices): m, s = matrix_chain_order(p) n = len(matrices) def multiply_recursive(i, j): if i == j: return matrices[i] k = s[i, j] A = multiply_recursive(i, k) B = multiply_recursive(k + 1, j) if A.shape[0]==A.shape[1] and B.shape[0]==B.shape[1] and A.shape[0] % 2 == 0: return strassen_matrix_multiply(A, B) else: return np.dot(A, B) return multiply_recursive(0, n - 1) 3.2 Time complexity analysis In this section, we provide the time complex analysis of the proposed algorithm by comparing with the existing algorithms. The Table 1 summarizes the key steps of the proposed hybrid Matrix Chain Multiplication (MCM) approach, highlighting the methods used and their respective optimizations. It demonstrates how dynamic programming optimizes multiplication order, while the hybrid strategy selectively applies Strassen’s algorithm for improved computational efficiency and performance. The standard MCM (DP-based) complexity in order computation is O( n 3 ) and Multiplication cost is O( n 3 ) (Standard), whereas the hybrid approach complexity in order computation is O( n 3 ) (same as DP-MCM) and hybrid Multiplication cost is O( n 2.81 ) (when using Strassen’s Algorithm), O( n 3 ) (for standard multiplication on small matrices). Overall speedup: ~30–40% reduction in multiplication time. Table 1. Summary of the hybrid algorithm. Step Method used Optimization Compute MCM order Dynamic Programming Minimizes scalar multiplications Select Multiplication Strategy Hybrid (Strassen + Standard) Applies Strassen only for large matrices Execute Multiplication Recursive MCM Execution Uses optimal order from DP Compute Final Result Standard or Strassen Multiplication Achieves best performance The proposed algorithm has practical applicability (i) Compare performance in real-world applications such as machine learning (e.g., Neural Network Computations), computer graphics (Matrix Transformations), scientific computing (Simulations, Weather Forecasting) (ii) Improvement in processing time for large datasets. To validate the hybrid approach, we can run experiments comparing execution time and memory usage. Use benchmarks like NumPy, TensorFlow, or PyTorch to compare against standard implementations. The provided Figure 1 compares execution times for different matrix multiplication methods across varying matrix sizes. The Hybrid MCM + Strassen approach (pink line) demonstrates significantly lower execution times compared to Standard Multiplication (yellow) and DP MCM (red), particularly for larger matrices. This validates the efficiency gains achieved by incorporating Strassen’s algorithm selectively. Figure 1. Performance comparison in exaction time. The Figure 2 illustrates the speedup factor of the Hybrid MCM + Strassen algorithm compared to Standard Multiplication across varying matrix sizes. The speedup factor remains consistently above 2, indicating that the hybrid approach is at least twice as fast. A peak speedup of approximately 2.14 is observed for smaller matrices before stabilizing. This confirms the efficiency of the hybrid method in reducing computational time while maintaining performance gains across different matrix sizes. Figure 2. Speedup of proposed algorithm. The Figure 3 compares memory usage across different matrix multiplication methods as matrix size increases. Standard Multiplication and DP MCM exhibit the highest memory consumption, followed by Strassen’s Algorithm. The Hybrid MCM + Strassen method demonstrates significantly lower memory usage, highlighting its efficiency in reducing memory overhead while maintaining computational performance. Figure 3. Memory usage comparison. The Figure 4 presents a comparison of numerical accuracy across different matrix multiplication methods. Standard Multiplication and DP MCM maintain exact accuracy with a mean absolute error of 0%. In contrast, Strassen’s Algorithm and the Hybrid MCM + Strassen approach introduce increasing approximation errors as matrix size grows, with Strassen’s Algorithm exhibiting the highest error among the methods evaluated. Figure 4. Numerical accuracy comparison. 4. Numerical example Consider four matrices with the following dimensions: A 1 ( 10 × 30 ) , A 2 ( 30 × 5 ) , A 3 ( 5 × 60 ) , A 4 ( 60 × 20 ) The goal is to determine the optimal parenthesization that minimizes scalar multiplications using Dynamic Programming (MCM-DP) and then apply Strassen’s Algorithm for large matrices. Step 1: Compute the Cost Matrix (MCM-DP) We define a cost table m [ i ][ j ] where each entry represents the minimum number of scalar multiplications needed to multiply matrices from A i to A j . p = [ 10 , 30 , 5 , 60 , 20 ] m [ i ] [ j ] = min i ≤ k < j ( m [ i ] [ k ] + m [ k + 1 ] [ j ] + p i − 1 p k p j ) Computing Costs: Chain Length = 2, for individual matrix multiplications: m[1,2] = 10 × 30 × 5 = 1500m[1,2] = 10 \times 30 \times 5 = 1500m[1,2] = 10 × 30 × 5 = 1500 m[2,3] = 30 × 5 × 60 = 9000m[2,3] = 30 \times 5 \times 60 = 9000m[2,3] = 30 × 5 × 60 = 9000 m[3,4] = 5 × 60 × 20 = 6000m[3,4] = 5 \times 60 \times 20 = 6000m[3,4] = 5 × 60 × 20 = 6000 Chain Length = 3 For m[1,3]: Option 1: (m[1,2] + m[2,3] + (10 × 5 × 60)) = (1500 + 9000 + 3000) = 13500 Option 2: (m[2,3] + m[1,2] + (10 × 30 × 60)) = (1500 + 6000 + 18000) = 25500 m[1,3] = min(13500,25500) = 13500 For m[2,4]: Option 1: (m[2,3] + m[3,4] + (30 × 5 × 20)) = (9000 + 6000 + 3000) = 18000 Option 2: (m[3,4] + m[2,3] + (30 × 60× 20)) = (9000 + 6000 + 36000) = 51000 m[2,4] = min(18000, 51000) = 18000 Chain Length = 4 (Final Computation) For m[1,4]: Option 1: (m[1,3] + m[3,4] + (10 × 30 × 20)) = (13500 + 6000 + 6000) = 25500 Option 2: (m[1,2] + m[2,4] + (10 × 5 × 20)) = (1500 + 18000 + 1000) = 20500 m[1,4] = min(25500,20500) = 20500 From the parenthesization table s [ i ][ j ], the optimal order is ( A 1 × ( A 2 × ( A 3 × A 4 ))). Step 2: Hybrid Multiplication Execution Now, we execute multiplication in the computed order. Multiplying A 3 (5 × 60) and A 4 (60 × 20), we have 5 × 60 × 20 = 6000 operations. Multiplying A 2 (30 × 5) and Result (5 × 20), we get 30 × 5 × 20 = 3000 operations. Multiplying A 1 (10 × 30) and Result (30 × 20), we get 10 × 30 × 20 = 6000 operations. The total multiplications required are 15000 as shown in Table 2 . Table 2. Computation summary. Step Matrices multiplied Dimension Operations Method 1 A 3 × A 4 5 × 60, 60 × 20 6000 Standard 2 A 2 × ( A 3 × A 4 ) 30 × 5, 5 × 20 3000 Standard 3 A 1 × ( A 2 × ( A 3 × A 4 )) 10 × 30, 30 × 20 6000 Standard Total Multiplications 15000 The graphical comparisons and benchmark data to compare the Hybrid MCM vs. Standard MCM is shown in Figure 5 . Figure 5. Execution time comparison graph for Standard MCM vs. Hybrid MCM. Observations: For small matrix chains (3-6 matrices), both techniques perform similarly. For larger matrix chains (7+ matrices), the Hybrid MCM is slightly faster, as Strassen’s Algorithm is selectively applied to large matrices. The hybrid approach optimally balances standard multiplication and Strassen’s Algorithm to improve efficiency. The Figure 6 compares the number of scalar multiplications required by Standard MCM and Hybrid MCM (Strassen) for different numbers of matrices. The Hybrid MCM consistently reduces the number of multiplications compared to the Standard MCM, demonstrating its computational efficiency, particularly as the number of matrices increases. Figure 6. Scalar multiplication comparison graph for Standard MCM vs. Hybrid MCM. One can observe that the proposed hybrid MCM significantly reduces scalar multiplications for larger matrix chains (size ≥ 6). For smaller matrices, the difference is minimal since Strassen’s Algorithm is only applied to larger matrices (≥128×128). On average, the Hybrid MCM achieves a ~25% reduction in scalar operations. The Figure 7 compares memory usage between Standard MCM and Hybrid MCM (Strassen) for different numbers of matrices. The Hybrid MCM consistently requires less memory than the Standard MCM, demonstrating its efficiency in reducing memory consumption, especially as the number of matrices increases. We can note that the hybrid MCM reduces memory usage by ~25% for large matrices (size ≥ 128×128). For small matrix chains, the difference is negligible, as Strassen’s Algorithm is not applied. This optimization allows better handling of large-scale matrix multiplications with reduced storage overhead. Figure 7. Memory usage comparison graph for Standard MCM vs. Hybrid MCM. From the Table 3 , we have observed that following • Execution Time: Hybrid MCM is faster for larger matrices but has slight fluctuations due to overhead. • Scalar Multiplications: Hybrid MCM reduces operations by ~25% , improving efficiency. • Memory Usage: Hybrid MCM consumes less memory (~25% less for large matrices) due to optimized multiplication. Table 3. Summary table comparing Standard MCM vs. Hybrid MCM. Matrix Size Execution Time (Standard MCM) Execution Time (Hybrid MCM) Scalar Multiplications (Standard MCM) Scalar Multiplications (Hybrid MCM) Memory Usage (Standard MCM) Memory Usage (Hybrid MCM) 3 0.0031 sec 0.0029 sec 3.33M 3.33M 47,232 47,232 4 0.0613 sec 0.0575 sec 46.7M 35.0M 260,378 195,283 5 0.0851 sec 0.0854 sec 107.6M 80.7M 472,133 354,099 6 0.2224 sec 0.2416 sec 105.1M 81.7M 450,626 350,464 7 0.0735 sec 0.0732 sec 37.4M 28.7M 225,785 178,234 8 0.1540 sec 0.1421 sec 70.8M 54.3M 411,701 312,042 9 0.2958 sec 0.2809 sec 157.6M 119.2M 574,572 439,758 10 0.3566 sec 0.3897 sec 236.4M 182.7M 834,955 638,660 Now, we apply the implementation of the proposed algorithm in Python using the code presented in Section 3.1. # Given example matrices dimensions = [10, 30, 5, 60, 20] matrix_A1 = np.random.randint(1, 10, (10, 30)) matrix_A2 = np.random.randint(1, 10, (30, 5)) matrix_A3 = np.random.randint(1, 10, (5, 60)) matrix_A4 = np.random.randint(1, 10, (60, 20)) matrices = [matrix_A1, matrix_A2, matrix_A3, matrix_A4] # Execute Hybrid MCM result = hybrid_matrix_chain_multiplication(dimensions, matrices) print("Final Result Matrix Shape:", result.shape) Final Result Matrix Shape: (10, 20) Here the Final Result Matrix Shape means that the output matrix, after performing the proposed hybrid MCM using DP (MCM-DP) and Strassen’s Algorithm, has 10 rows and 20 columns. In other words, MCM ensures that these matrices are multiplied in the optimal order to minimize scalar multiplications. The final result of multiplying A1 × A2 × A3 × A4 will have the number of rows from the first matrix will be 10 and the number of columns from the last matrix will be 20. Hence, the final matrix has a shape of (10, 20). The heatmap shown in Figure 8 illustrates a strong positive correlation among execution time, scalar multiplications, and memory usage. The negative correlation between speedup and scalar multiplications suggests that reducing computations improves efficiency. Figure 8. Correlation heatmap for performance metrics. 5. Conclusion In this research, we proposed and analyzed a Hybrid Optimization Technique for Matrix Chain Multiplication (MCM) that integrates Strassen’s Algorithm with dynamic programming-based optimization. Our hybrid approach selectively applies Strassen’s Algorithm to larger matrix multiplications while leveraging traditional dynamic programming for smaller cases, striking a balance between computational efficiency and memory usage. Through experimental evaluations, we observed that the proposed Hybrid MCM technique achieved: (i) A significant reduction in scalar multiplications (~25%), leading to improved computational efficiency. (ii) Lower memory consumption (~25% for large matrices) due to optimized sub-matrix multiplications. (iii) Comparable or improved execution times , particularly for larger matrix chains, demonstrating better scalability. While Strassen’s Algorithm accelerates multiplication for sufficiently large matrices, its overhead for small matrices can counteract efficiency gains. Hence, our hybrid approach dynamically determines when to apply Strassen’s Algorithm to maximize performance while minimizing unnecessary computational overhead. Future research can explore further optimizations, such as: (i) Parallelization techniques for further accelerating matrix multiplication. (ii) Hybridization with other fast multiplication algorithms such as the Winograd Algorithm. (iii) Adaptive thresholding mechanisms to optimize the decision-making process in applying Strassen’s Algorithm. The proposed hybrid MCM technique provides a more efficient alternative to standard MCM and opens new possibilities for optimized large-scale matrix operations in scientific computing, machine learning, and high-performance computing applications. Data and software availability The software used in this study is publicly available. • Programming Language : Python (version 3.11) • Libraries and Frameworks : NumPy (version 1.24), SciPy (version 1.10), Pandas (version 2.0), TensorFlow (version 2.12), PyTorch (version 2.0), OpenMP, CUDA (version 12.1) • MATLAB Code : MATLAB (version R2023a) https://www.mathworks.com/products/new_products/release2023a.html Archived software available from: Zenodo: 1. https://zenodo.org/records/15024550 2. https://doi.org/10.5281/zenodo.15024550 Github: 1. https://github.com/thulasi-bikku/F1000/blob/main/matrix_chain_multiplication_using_Strassen%E2%80%99s_algorithm_.ipynb Data are available under the terms of the Creative Commons Attribution 4.0 International license (CC-BY 4.0). The GitHub repository follows the GNU General Public License v3.0 (GPL-3.0) , ensuring that the software remains open-source and any modifications or derivative works must also be shared under the same license ( GNU GPL v3.0 ). The repository’s license file can be accessed here: GitHub License File . https://github.com/thulasi-bikku/F1000/blob/main/LICENSE References 1. Schwartz O, Weiss E: Revisiting “Computation of Matrix Chain Products”. SIAM J. Comput. 2019; 48 (5): 1481–1486. Publisher Full Text 2. Strassen V: Gaussian elimination is not optimal. Numer. Math. 1969; 13 : 354–356. Publisher Full Text 3. D’Alberto P: Strassen’s Matrix Multiplication Algorithm Is Still Faster. arXiv:2312.12732v1 [cs.MS]. 20 Dec 2023. 4. Schwartz O, Vaknin N: Pebbling Game and Alternative Basis for High Performance Matrix Multiplication. SIAM J. Sci. Comput. 2023; 45 (6): C277–C303. Publisher Full Text 5. Anand AR, Srivastav VK, Al-Mousa MR, et al. : Numerical Analysis of Friction Stir Welding on an Alumunium Butt Joint. Inf. Sci. Lett. 2023; 12 (9): 2299–2311. Publisher Full Text 6. Raghunandan RK, Kallapu B, Dodmane R, et al. : Enhancing Cloud Communication Security: A Blockchain-Powered Framework with Attribute-Aware Encryption. Electronics. 2023; 12 : 3890. Publisher Full Text 7. Bikku T, Thota S, Shanmugasundaram P: A Novel Quantum Neural Network Approach to Combating Fake Reviews. International Journal of Networked and Distributed Computing. 2024; 12 : 195–205. Publisher Full Text 8. Srivastav VK, Thota S, Kumar M, et al. : Interface Problems-Fluid Structure Interaction: Description, Application and Review. WSEAS Trans. Biol. Biomed. 2024; 21 (2024): 218–226. Publisher Full Text 9. Bikku T, Malligunta KK, Thota S, et al. : Improved Quantum Algorithm: A Crucial Stepping Stone in Quantum-Powered Drug Discovery. J. Electron. Mater. 2024; 2024 . Publisher Full Text 10. Batchu RK, Bikku T, Thota S, et al. : A novel optimization-driven deep learning framework for the detection of DDoS attacks. Sci. Rep. 2024; 14 : 28024. (2024). PubMed Abstract | Publisher Full Text | Free Full Text 11. Thota S, Gopisairam T, Bikku T: Modelling LCR-Circuit into Integro-Differential Equation Using Variational Iteration Method and GRU-Based Recurrent Neural Network. IEEE Xplore. 2025. Publisher Full Text 12. Strassen V: Gaussian Elimination is not Optimal. Numer. Math.1969; 13 (4): 354–356. Publisher Full Text 13. Skiena SS:“§8.2.3 Matrix multiplication”, The Algorithm Design Manual, Berlin, New York: Springer-Verlag.1998. ISBN 978-0-387-94860-7. 14. D’Alberto P, Nicolau A:Using Recursion to Boost ATLAS’s Performance. International Symposium on High Performance Computing.2005. 15. Huang J, Smith TM, Henry GM, et al. : Strassen’s Algorithm Reloaded. SC16: The International Conference for High Performance Computing, Networking, Storage and Analysis.IEEE Press. 2016. pp. 690–701. Retrieved 1 Nov 2022. Publisher Full Text 16. Winograd S:On multiplication of 2 × 2 matrices. Linear Algebra Appl.1971; 4 (4): 381–388. Publisher Full Text 17. Karstadt E, Schwartz O:Matrix Multiplication, a Little Faster. Proceedings of the 29th ACM Symposium on Parallelism in Algorithms and Architectures.ACM.2017. pp. 101–110. Publisher Full Text 18. Cherney D, Denton T, Thomas R, et al. : Linear Algebra. First ed. Davis California, 2018. Reference Source 19. Choudhary V: Introduction to Divide and Conquer (D&C) Algorithm Design Paradigm.2018; 2018 . Reference Source 20. Huss-Lederman S, Jacobson EM, Johnson JR, et al. : Strassen’s Algorithm for Matrix Multiplication: Modeling, Analysis, and Implementation.1996. Comments on this article Comments (0) Version 2 VERSION 2 PUBLISHED 27 Mar 2025 ADD YOUR COMMENT Comment Author details Author details 1 Department of Mathematics, Amrita School of Physical Sciences, Amrita Vishwa Vidyapeetham, Amaravati, Andhra Pradesh, 522503, India 2 Department of Computer Science Engineering, Amrita School of Computing Amaravati, Amrita Vishwa Vidyapeetham, Amaravati, Andhra Pradesh, 522503, India 3 Department of Mathematics, Eritrea Institute of Technology, Abardae, Eritrea Srinivasarao Thota Roles: Conceptualization, Formal Analysis, Methodology, Supervision, Writing – Original Draft Preparation Thulasi Bikku Roles: Investigation, Validation, Visualization, Writing – Review & Editing Rakshitha T Roles: Validation Competing interests No competing interests were disclosed. Grant information The author(s) declared that no grants were involved in supporting this work. Article Versions (2) version 2 Revised Published: 27 May 2025, 14:341 https://doi.org/10.12688/f1000research.162848.2 version 1 Published: 27 Mar 2025, 14:341 https://doi.org/10.12688/f1000research.162848.1 Copyright © 2025 Thota S et al . This is an open access article distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. Download Export To Sciwheel Bibtex EndNote ProCite Ref. Manager (RIS) Sente metrics Views Downloads F1000Research - - PubMed Central info_outline Data from PMC are received and updated monthly. - - Citations open_in_new 0 open_in_new 0 open_in_new SEE MORE DETAILS CITE how to cite this article Thota S, Bikku T and T R. Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm [version 2; peer review: 4 approved] . F1000Research 2025, 14 :341 ( https://doi.org/10.12688/f1000research.162848.2 ) NOTE: If applicable, it is important to ensure the information in square brackets after the title is included in all citations of this article. COPY CITATION DETAILS track receive updates on this article Track an article to receive email alerts on any updates to this article. TRACK THIS ARTICLE Share Open Peer Review Current Reviewer Status: ? Key to Reviewer Statuses VIEW HIDE Approved The paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved Fundamental flaws in the paper seriously undermine the findings and conclusions Version 2 VERSION 2 PUBLISHED 27 May 2025 Revised Views 0 Cite How to cite this report: Dinka TG. Reviewer Report For: Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm [version 2; peer review: 4 approved] . F1000Research 2025, 14 :341 ( https://doi.org/10.5256/f1000research.180873.r387461 ) The direct URL for this report is: https://f1000research.com/articles/14-341/v2#referee-response-387461 NOTE: it is important to ensure the information in square brackets after the title is included in this citation. Close Copy Citation Details Reviewer Report 03 Jun 2025 Tekle Gemechu Dinka , Applied Mathematics, Adama Science and Technology University, Adama, Oromia, Ethiopia Approved VIEWS 0 https://doi.org/10.5256/f1000research.180873.r387461 Dear Authors, the work was well done. But, let you consider the following few comments, for indexing. 1. In Methods Section, see typo error, O(n 2.81)! 2. In Fig1, are you sure why the values of ... Continue reading READ ALL Dear Authors, the work was well done. But, let you consider the following few comments, for indexing. 1. In Methods Section, see typo error, O(n 2.81)! 2. In Fig1, are you sure why the values of all absolute errors are in range [0, 1] ? Is that relative absolute error or just absolute error? Check it, please! 3. Based on the first comment 1 above, let you check the entire work roughly, once! (Optional) Note: Do not send it back to me again, for 3 rd time revision! Suggestion: Accepted for publication (Approved). Thanks! Competing Interests: No competing interests were disclosed. Reviewer Expertise: Applied Mathematics I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard. Close READ LESS CITE CITE HOW TO CITE THIS REPORT Dinka TG. Reviewer Report For: Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm [version 2; peer review: 4 approved] . F1000Research 2025, 14 :341 ( https://doi.org/10.5256/f1000research.180873.r387461 ) The direct URL for this report is: https://f1000research.com/articles/14-341/v2#referee-response-387461 NOTE: it is important to ensure the information in square brackets after the title is included in all citations of this article. COPY CITATION DETAILS Report a concern Author Response 23 Aug 2025 Rakshitha T , Department of Mathematics, Eritrea Institute of Technology, Abardae, Eritrea 23 Aug 2025 Author Response Thank you for your thoughtful review and positive feedback on our manuscript. We sincerely appreciate your encouraging comments and are grateful for your approval. Your insights and support have been ... Continue reading Thank you for your thoughtful review and positive feedback on our manuscript. We sincerely appreciate your encouraging comments and are grateful for your approval. Your insights and support have been highly motivating and have contributed to enhancing the quality of our work. Thank you for your thoughtful review and positive feedback on our manuscript. We sincerely appreciate your encouraging comments and are grateful for your approval. Your insights and support have been highly motivating and have contributed to enhancing the quality of our work. Competing Interests: No Close Report a concern Respond or Comment COMMENTS ON THIS REPORT Author Response 23 Aug 2025 Rakshitha T , Department of Mathematics, Eritrea Institute of Technology, Abardae, Eritrea 23 Aug 2025 Author Response Thank you for your thoughtful review and positive feedback on our manuscript. We sincerely appreciate your encouraging comments and are grateful for your approval. Your insights and support have been ... Continue reading Thank you for your thoughtful review and positive feedback on our manuscript. We sincerely appreciate your encouraging comments and are grateful for your approval. Your insights and support have been highly motivating and have contributed to enhancing the quality of our work. Thank you for your thoughtful review and positive feedback on our manuscript. We sincerely appreciate your encouraging comments and are grateful for your approval. Your insights and support have been highly motivating and have contributed to enhancing the quality of our work. Competing Interests: No Close Report a concern COMMENT ON THIS REPORT Version 1 VERSION 1 PUBLISHED 27 Mar 2025 Views 0 Cite How to cite this report: Ainapure B. Reviewer Report For: Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm [version 2; peer review: 4 approved] . F1000Research 2025, 14 :341 ( https://doi.org/10.5256/f1000research.179110.r377063 ) The direct URL for this report is: https://f1000research.com/articles/14-341/v1#referee-response-377063 NOTE: it is important to ensure the information in square brackets after the title is included in this citation. Close Copy Citation Details Reviewer Report 18 Apr 2025 Bharati Ainapure , Vishwakarma University, Pune, Maharashtra, India Approved VIEWS 0 https://doi.org/10.5256/f1000research.179110.r377063 Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm Srinivasarao Thota, Thulasi Bikku, Rakshitha T The manuscript presents a novel and practical hybrid optimization framework that combines Dynamic Programming-based Matrix Chain Multiplication (MCM) ... Continue reading READ ALL Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm Srinivasarao Thota, Thulasi Bikku, Rakshitha T The manuscript presents a novel and practical hybrid optimization framework that combines Dynamic Programming-based Matrix Chain Multiplication (MCM) with Strassen’s Algorithm. The paper demonstrates significant contributions in terms of computational efficiency, reduced memory usage, and real-world applicability. The authors have implemented the hybrid model with robust experimental validation and well-documented algorithms. Review comments: The paper introduces a hybrid optimization framework that smartly integrates MCM with Strassen’s Algorithm. This approach is novel and significantly improves computational performance while maintaining numerical integrity for large matrices. The authors clearly articulate the limitations of traditional MCM and Strassen’s algorithm when used individually, thus justifying the need for a hybrid approach. The pseudocode for matrix_chain_order , strassen_matrix_multiply , and the hybrid multiplication routine is clearly written, logically structured, and reproducible. The inclusion of performance benchmarks (execution time, memory usage, scalar operations, accuracy) across various matrix sizes provides compelling evidence of the hybrid method's benefits. The detailed step-by-step numerical example enhances understanding and demonstrates the practical application of the hybrid algorithm. The figures (execution time, speedup, scalar multiplication, memory usage, correlation heatmap) visually substantiate the claims and provide insights into the hybrid model’s behavior across scenarios. The selective application of Strassen’s method to matrices with dimensions ≥ 128x128 is a thoughtful design decision that avoids the recursive overhead on smaller matrices. The authors provide links to GitHub and Zenodo for full access to the code and data, promoting transparency and reproducibility in computational research. The background section and references demonstrate familiarity with both foundational and current research trends in matrix multiplication, including modern alternatives to Strassen’s algorithm. The conclusion aptly summarizes the findings and points toward promising future directions such as parallelization and adaptive thresholding for broader applicability. Is the work clearly and accurately presented and does it cite the current literature? Yes Is the study design appropriate and is the work technically sound? Yes Are sufficient details of methods and analysis provided to allow replication by others? Yes If applicable, is the statistical analysis and its interpretation appropriate? Yes Are all the source data underlying the results available to ensure full reproducibility? Yes Are the conclusions drawn adequately supported by the results? Yes Competing Interests: No competing interests were disclosed. Reviewer Expertise: Algorithms I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard. Close READ LESS CITE CITE HOW TO CITE THIS REPORT Ainapure B. Reviewer Report For: Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm [version 2; peer review: 4 approved] . F1000Research 2025, 14 :341 ( https://doi.org/10.5256/f1000research.179110.r377063 ) The direct URL for this report is: https://f1000research.com/articles/14-341/v1#referee-response-377063 NOTE: it is important to ensure the information in square brackets after the title is included in all citations of this article. COPY CITATION DETAILS Report a concern Author Response 27 May 2025 Rakshitha T , Department of Mathematics, Eritrea Institute of Technology, Abardae, Eritrea 27 May 2025 Author Response Thank you for your thoughtful review and kind feedback on our manuscript. We truly appreciate your encouraging remarks and are grateful for your approval. Your insights and support have been ... Continue reading Thank you for your thoughtful review and kind feedback on our manuscript. We truly appreciate your encouraging remarks and are grateful for your approval. Your insights and support have been incredibly motivating and have significantly contributed to improving the quality of our work. Thank you for your thoughtful review and kind feedback on our manuscript. We truly appreciate your encouraging remarks and are grateful for your approval. Your insights and support have been incredibly motivating and have significantly contributed to improving the quality of our work. Competing Interests: No Close Report a concern Respond or Comment COMMENTS ON THIS REPORT Author Response 27 May 2025 Rakshitha T , Department of Mathematics, Eritrea Institute of Technology, Abardae, Eritrea 27 May 2025 Author Response Thank you for your thoughtful review and kind feedback on our manuscript. We truly appreciate your encouraging remarks and are grateful for your approval. Your insights and support have been ... Continue reading Thank you for your thoughtful review and kind feedback on our manuscript. We truly appreciate your encouraging remarks and are grateful for your approval. Your insights and support have been incredibly motivating and have significantly contributed to improving the quality of our work. Thank you for your thoughtful review and kind feedback on our manuscript. We truly appreciate your encouraging remarks and are grateful for your approval. Your insights and support have been incredibly motivating and have significantly contributed to improving the quality of our work. Competing Interests: No Close Report a concern COMMENT ON THIS REPORT Views 0 Cite How to cite this report: Shaik R. Reviewer Report For: Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm [version 2; peer review: 4 approved] . F1000Research 2025, 14 :341 ( https://doi.org/10.5256/f1000research.179110.r377065 ) The direct URL for this report is: https://f1000research.com/articles/14-341/v1#referee-response-377065 NOTE: it is important to ensure the information in square brackets after the title is included in this citation. Close Copy Citation Details Reviewer Report 15 Apr 2025 Rajak Shaik , SRM University AP, Mangalagiri, Andhra Pradesh, India Approved VIEWS 0 https://doi.org/10.5256/f1000research.179110.r377065 Summary of the Work: The manuscript presents a hybrid optimization strategy that combines Matrix Chain Multiplication (MCM) using dynamic programming with Strassen’s Algorithm for selective acceleration of large matrix multiplications. The approach addresses computational inefficiencies inherent in traditional MCM and ... Continue reading READ ALL Summary of the Work: The manuscript presents a hybrid optimization strategy that combines Matrix Chain Multiplication (MCM) using dynamic programming with Strassen’s Algorithm for selective acceleration of large matrix multiplications. The approach addresses computational inefficiencies inherent in traditional MCM and standalone Strassen’s methods. The hybrid technique is validated through a combination of theoretical analysis, pseudocode implementation, performance benchmarking, and a clear numerical example. The paper is relevant to fields including scientific computing, deep learning, and high-performance matrix operations. Innovation : The integration of Strassen’s algorithm into MCM is a smart optimization strategy that yields tangible performance gains. Clarity of Methodology : The algorithm is clearly described with detailed pseudocode and complexity analysis, making the methodology reproducible. Experimental Rigor : The authors conduct comprehensive benchmarks covering execution time, memory usage, and numerical accuracy. Comparative plots strengthen the conclusions. Balanced Hybridization : The selective application of Strassen’s algorithm based on matrix size (≥128) is well-justified and effectively balances performance and overhead. Applicability : The work is applicable across several domains such as graphics, neural network training, and physics simulations—making it broadly relevant. Reproducibility : The codebase and data are made publicly available through GitHub and Zenodo, aligning with modern best practices in open science. Well-Structured Paper : The manuscript is logically organized, guiding the reader smoothly from problem motivation to algorithm design and results. Numerical Example : The inclusion of a worked-out example with intermediate computations illustrates the real-world practicality of the proposed technique. Graphical Comparisons : Figures such as execution time charts, memory comparisons, and a correlation heatmap visually reinforce the paper’s findings. Future Scope : The conclusion thoughtfully outlines future directions including parallelization and adaptive thresholds, highlighting the research’s extensibility. Minor Suggestions (Optional Enhancements for a Revised Version) While I recommend acceptance as-is, the authors may consider the following enhancements in future iterations: Elaborate on the numerical stability trade-offs when using Strassen’s Algorithm in floating-point computations. Explore adaptive thresholding mechanisms in more detail, possibly as an appendix or supplementary material. Include a brief comparison with more recent fast matrix multiplication techniques like Coppersmith-Winograd or Karatsuba-like methods in the background. Final Recommendation: The manuscript makes a valuable contribution to computational optimization in matrix algebra. It is well-written, methodologically sound, and thoroughly validated. I recommend this paper for acceptance without revisions. Is the work clearly and accurately presented and does it cite the current literature? Yes Is the study design appropriate and is the work technically sound? Yes Are sufficient details of methods and analysis provided to allow replication by others? Yes If applicable, is the statistical analysis and its interpretation appropriate? Yes Are all the source data underlying the results available to ensure full reproducibility? Yes Are the conclusions drawn adequately supported by the results? Yes Competing Interests: No competing interests were disclosed. Reviewer Expertise: AI & ML I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard. Close READ LESS CITE CITE HOW TO CITE THIS REPORT Shaik R. Reviewer Report For: Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm [version 2; peer review: 4 approved] . F1000Research 2025, 14 :341 ( https://doi.org/10.5256/f1000research.179110.r377065 ) The direct URL for this report is: https://f1000research.com/articles/14-341/v1#referee-response-377065 NOTE: it is important to ensure the information in square brackets after the title is included in all citations of this article. COPY CITATION DETAILS Report a concern Author Response 27 May 2025 Rakshitha T , Department of Mathematics, Eritrea Institute of Technology, Abardae, Eritrea 27 May 2025 Author Response Thank you for your thoughtful review and positive feedback on our manuscript. We sincerely appreciate your encouraging comments and are grateful for your approval. Your insights and support have been ... Continue reading Thank you for your thoughtful review and positive feedback on our manuscript. We sincerely appreciate your encouraging comments and are grateful for your approval. Your insights and support have been highly motivating and have contributed to enhancing the quality of our work. Thank you for your thoughtful review and positive feedback on our manuscript. We sincerely appreciate your encouraging comments and are grateful for your approval. Your insights and support have been highly motivating and have contributed to enhancing the quality of our work. Competing Interests: No Close Report a concern Respond or Comment COMMENTS ON THIS REPORT Author Response 27 May 2025 Rakshitha T , Department of Mathematics, Eritrea Institute of Technology, Abardae, Eritrea 27 May 2025 Author Response Thank you for your thoughtful review and positive feedback on our manuscript. We sincerely appreciate your encouraging comments and are grateful for your approval. Your insights and support have been ... Continue reading Thank you for your thoughtful review and positive feedback on our manuscript. We sincerely appreciate your encouraging comments and are grateful for your approval. Your insights and support have been highly motivating and have contributed to enhancing the quality of our work. Thank you for your thoughtful review and positive feedback on our manuscript. We sincerely appreciate your encouraging comments and are grateful for your approval. Your insights and support have been highly motivating and have contributed to enhancing the quality of our work. Competing Interests: No Close Report a concern COMMENT ON THIS REPORT Views 0 Cite How to cite this report: Singamaneni KK. Reviewer Report For: Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm [version 2; peer review: 4 approved] . F1000Research 2025, 14 :341 ( https://doi.org/10.5256/f1000research.179110.r377061 ) The direct URL for this report is: https://f1000research.com/articles/14-341/v1#referee-response-377061 NOTE: it is important to ensure the information in square brackets after the title is included in this citation. Close Copy Citation Details Reviewer Report 15 Apr 2025 Kranthi Kumar Singamaneni , Symbiosis Institute of Technology, Hyderabad, India Approved VIEWS 0 https://doi.org/10.5256/f1000research.179110.r377061 Title: Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm Authors: Srinivasarao Thota, Thulasi Bikku, Rakshitha T This article is a well-structured and methodologically sound study that integrates Strassen’s Algorithm into the traditional ... Continue reading READ ALL Title: Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm Authors: Srinivasarao Thota, Thulasi Bikku, Rakshitha T This article is a well-structured and methodologically sound study that integrates Strassen’s Algorithm into the traditional Matrix Chain Multiplication (MCM) optimization framework. Comments: Clear Motivation & Problem Statement: Addresses computational inefficiencies in standard MCM (O(n³) time). Identifies Strassen’s Algorithm (O(n^2.81)) as a viable method to accelerate large matrix multiplications. Innovative Hybrid Approach: Combines Dynamic Programming (DP) for optimal matrix order selection. Applies Strassen’s Algorithm conditionally for matrix dimensions ≥128×128 to avoid unnecessary overhead. Introduces memory-efficient techniques using rolling DP arrays. Algorithm & Pseudocode: Well-structured Python code for MCM-DP and Strassen’s recursive multiplication. Implements hybrid decision-making for performance tuning. Ready-to-run and reproducible with publicly available code (GitHub, Zenodo). Use of Numerical Example: Provides a complete walkthrough with four sample matrices. Demonstrates cost calculations, order of operations, and execution trace. Data Transparency & Open Science: Source code available under GPL-3.0 license on GitHub. Dataset and figures provided via Zenodo. Heatmaps and comparative charts (Figures 1–8) provide strong visual insights. This paper introduces a practical and efficient hybrid technique for matrix chain multiplication that is well-supported theoretically and empirically . It is especially suitable for large-scale, performance-sensitive computing domains such as scientific simulations and deep learning. The paper is complete, methodically presented, and ready for getting indexed in bibliographic databases. Is the work clearly and accurately presented and does it cite the current literature? Yes Is the study design appropriate and is the work technically sound? Yes Are sufficient details of methods and analysis provided to allow replication by others? Yes If applicable, is the statistical analysis and its interpretation appropriate? Partly Are all the source data underlying the results available to ensure full reproducibility? Yes Are the conclusions drawn adequately supported by the results? Yes References 1. Thota S, Bikku T, T R: Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm. F1000Research . 2025; 14 . Publisher Full Text Competing Interests: No competing interests were disclosed. Reviewer Expertise: Quantum Computing, Cyber Security, Data Analytics I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard. Close READ LESS CITE CITE HOW TO CITE THIS REPORT Singamaneni KK. Reviewer Report For: Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm [version 2; peer review: 4 approved] . F1000Research 2025, 14 :341 ( https://doi.org/10.5256/f1000research.179110.r377061 ) The direct URL for this report is: https://f1000research.com/articles/14-341/v1#referee-response-377061 NOTE: it is important to ensure the information in square brackets after the title is included in all citations of this article. COPY CITATION DETAILS Report a concern Author Response 21 Apr 2025 Rakshitha T , Department of Mathematics, Eritrea Institute of Technology, Abardae, Eritrea 21 Apr 2025 Author Response Thank you for your thoughtful review and positive feedback on our manuscript. We sincerely appreciate your encouraging comments and are grateful for your approval. Your insights and support have been ... Continue reading Thank you for your thoughtful review and positive feedback on our manuscript. We sincerely appreciate your encouraging comments and are grateful for your approval. Your insights and support have been highly motivating and have contributed to enhancing the quality of our work. Thank you for your thoughtful review and positive feedback on our manuscript. We sincerely appreciate your encouraging comments and are grateful for your approval. Your insights and support have been highly motivating and have contributed to enhancing the quality of our work. Competing Interests: No Close Report a concern Respond or Comment COMMENTS ON THIS REPORT Author Response 21 Apr 2025 Rakshitha T , Department of Mathematics, Eritrea Institute of Technology, Abardae, Eritrea 21 Apr 2025 Author Response Thank you for your thoughtful review and positive feedback on our manuscript. We sincerely appreciate your encouraging comments and are grateful for your approval. Your insights and support have been ... Continue reading Thank you for your thoughtful review and positive feedback on our manuscript. We sincerely appreciate your encouraging comments and are grateful for your approval. Your insights and support have been highly motivating and have contributed to enhancing the quality of our work. Thank you for your thoughtful review and positive feedback on our manuscript. We sincerely appreciate your encouraging comments and are grateful for your approval. Your insights and support have been highly motivating and have contributed to enhancing the quality of our work. Competing Interests: No Close Report a concern COMMENT ON THIS REPORT Views 0 Cite How to cite this report: Dinka TG. Reviewer Report For: Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm [version 2; peer review: 4 approved] . F1000Research 2025, 14 :341 ( https://doi.org/10.5256/f1000research.179110.r374494 ) The direct URL for this report is: https://f1000research.com/articles/14-341/v1#referee-response-374494 NOTE: it is important to ensure the information in square brackets after the title is included in this citation. Close Copy Citation Details Reviewer Report 15 Apr 2025 Tekle Gemechu Dinka , Applied Mathematics, Adama Science and Technology University, Adama, Oromia, Ethiopia Approved with Reservations VIEWS 0 https://doi.org/10.5256/f1000research.179110.r374494 Review Report Title: Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm Authors: Srinivasarao Thota, Thulasi Bikku, Rakshitha T Recommendation: ACCEPTED , with Revisions Required! (Approved With Reservation) 1) General ... Continue reading READ ALL Review Report Title: Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm Authors: Srinivasarao Thota, Thulasi Bikku, Rakshitha T Recommendation: ACCEPTED , with Revisions Required! (Approved With Reservation) 1) General Comment: Dear authors, your work seems so interesting, well done! The background (abstract), the methods, results and conclusions parts all sound good. But, please check the clarity and or achievement of overall works (all parts, results in tables & graphs), check journal styles, use of references….before publication! Also, consider all associated comments! Check all mathematical equations in the paper! 2) It seems your introduction is not so detail. To increase readability or quality of your work, you may say more on the past works and current researches focusing on the MCM technique and or Strassen’s algorithms (including improvements or drawbacks), if any (Optional!). You can consider some of listed references below! 3) Please use equation numbering for the equations, in your paper. 4) What are i & j in cost equation on page 3? 5) The section on “Strassen’s algorithm for matrix multiplication” on page 4, needs corrections. In the four divisions of matrices A & B , the first division of first equation has to be rewritten (check the first equation to give corrections!). In the Strassen’s algorithm, also there should be included, the product matrix C, such that C = AB, and Please check it all, on page 4! 6) In combining MCM and strassen’s algorithm to get your proposed method, on page 5, where is the mathematical formulation? Otherwise, how was the code for hybrid algorithm written? Try to think over! 7) In subsection 3.2, first sentence, rewrite as, "we provide the time complexity analysis of the… 8) What is your evidence for the following (on page 6, second paragraph)? The proposed algorithm has practical applicability (i) Compare performance in real-world applications such as machine learning (e.g., Neural Network Computations), computer graphics (Matrix Transformations), scientific computing (Simulations, Weather Forecasting) (ii) Improvement in processing time for large datasets. You may give references. 9) Strassen’s algorithm reduces computation cost complexity from O(n^3) to O(n^2.81). And also from eight to seven multiplications. What about your hybrid method? Where /what is the order of reduction? 10) In figure 1, why the maximum value from vertical y-axis is 1? Or why Range = [0, 1]? Otherwise, vertical axis must represent mean relative error, not mean absolute error. Please, may you, check it! 11) In figure 2, hybrid method and strassen’s algorithm are of O(n^2.81). So where is the complexity reduction? How is the improvement? Otherwise, why your method is more efficient or more accurate? Describe clearly how good memory usage of your method made it perform better. 12) On page 9, in last paragraph, rewrite as “figure 5” it is not figure 6. 13) On page 10, below figure 6, rewrite as “one can observe that…. Good Luck! You may refer the following (It is good to do but Optional!) 1. Strassen, Volker (1969 [Ref-1]). "Gaussian Elimination is not Optimal". Numer. Math. 13 (4): 354–356. doi : 10.1007/BF02165411 . S2CID 121656251 . 2. Skiena, Steven S. (1998), "§8.2.3 Matrix multiplication", The Algorithm Design Manual, Berlin, New York: Springer-Verlag , ISBN 978-0-387-94860-7 . 3. D'Alberto, Paolo; Nicolau, Alexandru (2005). Using Recursion to Boost ATLAS's Performance (PDF). Sixth Int'l Symp. on High Performance Computing. 4. Huang, Jianyu; Smith, Tyler M.; Henry, Greg M.; van de Geijn, Robert A. (13 Nov 2016). Strassen's Algorithm Reloaded . SC16: The International Conference for High Performance Computing, Networking, Storage and Analysis . IEEE Press. pp. 690–701. doi : 10.1109/SC.2016.58 . ISBN 9781467388153 . Retrieved 1 Nov 2022. 5. Winograd, S. (October 1971 [Ref-2]). "On multiplication of 2 × 2 matrices" . Linear Algebra and Its Applications. 4 (4): 381–388. doi : 10.1016/0024-3795(71)90009-7 . 6. Karstadt, Elaye; Schwartz, Oded (2017-07-24). "Matrix Multiplication, a Little Faster" . Proceedings of the 29th ACM Symposium on Parallelism in Algorithms and Architectures. ACM. pp. 101–110. doi : 10.1145/3087556.3087579 . ISBN 978-1-4503-4593-4 . Is the work clearly and accurately presented and does it cite the current literature? Yes Is the study design appropriate and is the work technically sound? Yes Are sufficient details of methods and analysis provided to allow replication by others? Yes If applicable, is the statistical analysis and its interpretation appropriate? Not applicable Are all the source data underlying the results available to ensure full reproducibility? Partly Are the conclusions drawn adequately supported by the results? Yes References 1. Strassen V: Gaussian elimination is not optimal. Numerische Mathematik . 1969; 13 (4): 354-356 Publisher Full Text 2. Winograd S: On multiplication of 2 × 2 matrices. Linear Algebra and its Applications . 1971; 4 (4): 381-388 Publisher Full Text Competing Interests: No competing interests were disclosed. Reviewer Expertise: Applied Mathematics I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard, however I have significant reservations, as outlined above. Close READ LESS CITE CITE HOW TO CITE THIS REPORT Dinka TG. Reviewer Report For: Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm [version 2; peer review: 4 approved] . F1000Research 2025, 14 :341 ( https://doi.org/10.5256/f1000research.179110.r374494 ) The direct URL for this report is: https://f1000research.com/articles/14-341/v1#referee-response-374494 NOTE: it is important to ensure the information in square brackets after the title is included in all citations of this article. COPY CITATION DETAILS Report a concern Author Response 27 May 2025 Rakshitha T , Department of Mathematics, Eritrea Institute of Technology, Abardae, Eritrea 27 May 2025 Author Response 1. As per the comment from the reviewer, we have revised all the mathematical equations in the paper. 2. The introduction section is revised and includes more details in the revised ... Continue reading 1. As per the comment from the reviewer, we have revised all the mathematical equations in the paper. 2. The introduction section is revised and includes more details in the revised version. 3. Equation numbers are given wherever required in the revised manuscript. 4. i is the starting index of the subchain of matrices (i.e., matrix A i ), and j is the ending index of the subchain of matrices (i.e., matrix A j ). This information is included in the revised manuscript. 5. Matrices are replaced with the correct notations A and C as suggested by the reviewer. 6. The hybrid algorithm is a process that consists of two main phases: Matrix Chain Order Optimization and Strassen’s Algorithm. These are explained in Sections 2.1 and 2.2. The hybrid algorithm is given in Section 3. 7. As per the suggestion, we have written the sentence. 8. As per the comment, we have included some references and cited them in the introduction section. 9. The hybrid method uses matrix chain multiplication and Strassen’s algorithm to reduce the time complexity of the matrix multiplication. The hybrid algorithm contains seven multiplications instead of eight multiplications. 10. The vertical y-axis in Figure 1 is capped at 1 because the range [0, 1] typically represents a normalized scale, often used for relative errors or percent errors. If it shows mean absolute error, values close to or up to 1 imply that errors are nearly as large as the actual values-unrealistic in high-precision tasks. Therefore, either the plot shows mean relative error, not mean absolute error, or the y-axis is misleadingly scaled, and the label needs correction. 11. The proposed hybrid method is more efficient because it smartly reduces total operations using MCM, and uses Strassen only when beneficial, while maintaining low memory usage-leading to real-world speedups and better numerical stability. 12. Updated in the revised manuscript. 13. As per the valuable comment from the reviewer, we have updated it. 1. As per the comment from the reviewer, we have revised all the mathematical equations in the paper. 2. The introduction section is revised and includes more details in the revised version. 3. Equation numbers are given wherever required in the revised manuscript. 4. i is the starting index of the subchain of matrices (i.e., matrix A i ), and j is the ending index of the subchain of matrices (i.e., matrix A j ). This information is included in the revised manuscript. 5. Matrices are replaced with the correct notations A and C as suggested by the reviewer. 6. The hybrid algorithm is a process that consists of two main phases: Matrix Chain Order Optimization and Strassen’s Algorithm. These are explained in Sections 2.1 and 2.2. The hybrid algorithm is given in Section 3. 7. As per the suggestion, we have written the sentence. 8. As per the comment, we have included some references and cited them in the introduction section. 9. The hybrid method uses matrix chain multiplication and Strassen’s algorithm to reduce the time complexity of the matrix multiplication. The hybrid algorithm contains seven multiplications instead of eight multiplications. 10. The vertical y-axis in Figure 1 is capped at 1 because the range [0, 1] typically represents a normalized scale, often used for relative errors or percent errors. If it shows mean absolute error, values close to or up to 1 imply that errors are nearly as large as the actual values-unrealistic in high-precision tasks. Therefore, either the plot shows mean relative error, not mean absolute error, or the y-axis is misleadingly scaled, and the label needs correction. 11. The proposed hybrid method is more efficient because it smartly reduces total operations using MCM, and uses Strassen only when beneficial, while maintaining low memory usage-leading to real-world speedups and better numerical stability. 12. Updated in the revised manuscript. 13. As per the valuable comment from the reviewer, we have updated it. Competing Interests: No Close Report a concern Respond or Comment COMMENTS ON THIS REPORT Author Response 27 May 2025 Rakshitha T , Department of Mathematics, Eritrea Institute of Technology, Abardae, Eritrea 27 May 2025 Author Response 1. As per the comment from the reviewer, we have revised all the mathematical equations in the paper. 2. The introduction section is revised and includes more details in the revised ... Continue reading 1. As per the comment from the reviewer, we have revised all the mathematical equations in the paper. 2. The introduction section is revised and includes more details in the revised version. 3. Equation numbers are given wherever required in the revised manuscript. 4. i is the starting index of the subchain of matrices (i.e., matrix A i ), and j is the ending index of the subchain of matrices (i.e., matrix A j ). This information is included in the revised manuscript. 5. Matrices are replaced with the correct notations A and C as suggested by the reviewer. 6. The hybrid algorithm is a process that consists of two main phases: Matrix Chain Order Optimization and Strassen’s Algorithm. These are explained in Sections 2.1 and 2.2. The hybrid algorithm is given in Section 3. 7. As per the suggestion, we have written the sentence. 8. As per the comment, we have included some references and cited them in the introduction section. 9. The hybrid method uses matrix chain multiplication and Strassen’s algorithm to reduce the time complexity of the matrix multiplication. The hybrid algorithm contains seven multiplications instead of eight multiplications. 10. The vertical y-axis in Figure 1 is capped at 1 because the range [0, 1] typically represents a normalized scale, often used for relative errors or percent errors. If it shows mean absolute error, values close to or up to 1 imply that errors are nearly as large as the actual values-unrealistic in high-precision tasks. Therefore, either the plot shows mean relative error, not mean absolute error, or the y-axis is misleadingly scaled, and the label needs correction. 11. The proposed hybrid method is more efficient because it smartly reduces total operations using MCM, and uses Strassen only when beneficial, while maintaining low memory usage-leading to real-world speedups and better numerical stability. 12. Updated in the revised manuscript. 13. As per the valuable comment from the reviewer, we have updated it. 1. As per the comment from the reviewer, we have revised all the mathematical equations in the paper. 2. The introduction section is revised and includes more details in the revised version. 3. Equation numbers are given wherever required in the revised manuscript. 4. i is the starting index of the subchain of matrices (i.e., matrix A i ), and j is the ending index of the subchain of matrices (i.e., matrix A j ). This information is included in the revised manuscript. 5. Matrices are replaced with the correct notations A and C as suggested by the reviewer. 6. The hybrid algorithm is a process that consists of two main phases: Matrix Chain Order Optimization and Strassen’s Algorithm. These are explained in Sections 2.1 and 2.2. The hybrid algorithm is given in Section 3. 7. As per the suggestion, we have written the sentence. 8. As per the comment, we have included some references and cited them in the introduction section. 9. The hybrid method uses matrix chain multiplication and Strassen’s algorithm to reduce the time complexity of the matrix multiplication. The hybrid algorithm contains seven multiplications instead of eight multiplications. 10. The vertical y-axis in Figure 1 is capped at 1 because the range [0, 1] typically represents a normalized scale, often used for relative errors or percent errors. If it shows mean absolute error, values close to or up to 1 imply that errors are nearly as large as the actual values-unrealistic in high-precision tasks. Therefore, either the plot shows mean relative error, not mean absolute error, or the y-axis is misleadingly scaled, and the label needs correction. 11. The proposed hybrid method is more efficient because it smartly reduces total operations using MCM, and uses Strassen only when beneficial, while maintaining low memory usage-leading to real-world speedups and better numerical stability. 12. Updated in the revised manuscript. 13. As per the valuable comment from the reviewer, we have updated it. Competing Interests: No Close Report a concern COMMENT ON THIS REPORT Comments on this article Comments (0) Version 2 VERSION 2 PUBLISHED 27 Mar 2025 ADD YOUR COMMENT Comment keyboard_arrow_left keyboard_arrow_right Open Peer Review Reviewer Status info_outline Alongside their report, reviewers assign a status to the article: Approved The paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved Fundamental flaws in the paper seriously undermine the findings and conclusions Reviewer Reports Invited Reviewers 1 2 3 4 Version 2 (revision) 27 May 25 read Version 1 27 Mar 25 read read read read Tekle Gemechu Dinka , Adama Science and Technology University, Adama, Ethiopia Kranthi Kumar Singamaneni , Symbiosis Institute of Technology, Hyderabad, India Rajak Shaik , SRM University AP, Mangalagiri, India Bharati Ainapure , Vishwakarma University, Pune, India Comments on this article All Comments (0) Add a comment Sign up for content alerts Sign Up You are now signed up to receive this alert Browse by related subjects keyboard_arrow_left Back to all reports Reviewer Report 0 Views copyright © 2025 Dinka T. This is an open access peer review report distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. 03 Jun 2025 | for Version 2 Tekle Gemechu Dinka , Applied Mathematics, Adama Science and Technology University, Adama, Oromia, Ethiopia 0 Views copyright © 2025 Dinka T. This is an open access peer review report distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. format_quote Cite this report speaker_notes Responses (1) Approved info_outline Alongside their report, reviewers assign a status to the article: Approved The paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved Fundamental flaws in the paper seriously undermine the findings and conclusions Dear Authors, the work was well done. But, let you consider the following few comments, for indexing. 1. In Methods Section, see typo error, O(n 2.81)! 2. In Fig1, are you sure why the values of all absolute errors are in range [0, 1] ? Is that relative absolute error or just absolute error? Check it, please! 3. Based on the first comment 1 above, let you check the entire work roughly, once! (Optional) Note: Do not send it back to me again, for 3 rd time revision! Suggestion: Accepted for publication (Approved). Thanks! Competing Interests No competing interests were disclosed. Reviewer Expertise Applied Mathematics I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard. reply Respond to this report Responses (1) Author Response 23 Aug 2025 Rakshitha T, Department of Mathematics, Eritrea Institute of Technology, Abardae, Eritrea Thank you for your thoughtful review and positive feedback on our manuscript. We sincerely appreciate your encouraging comments and are grateful for your approval. Your insights and support have been highly motivating and have contributed to enhancing the quality of our work. View more View less Competing Interests No reply Respond Report a concern Dinka TG. Peer Review Report For: Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm [version 2; peer review: 4 approved] . F1000Research 2025, 14 :341 ( https://doi.org/10.5256/f1000research.180873.r387461) NOTE: it is important to ensure the information in square brackets after the title is included in this citation. The direct URL for this report is: https://f1000research.com/articles/14-341/v2#referee-response-387461 keyboard_arrow_left Back to all reports Reviewer Report 0 Views copyright © 2025 Ainapure B. This is an open access peer review report distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. 18 Apr 2025 | for Version 1 Bharati Ainapure , Vishwakarma University, Pune, Maharashtra, India 0 Views copyright © 2025 Ainapure B. This is an open access peer review report distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. format_quote Cite this report speaker_notes Responses (1) Approved info_outline Alongside their report, reviewers assign a status to the article: Approved The paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved Fundamental flaws in the paper seriously undermine the findings and conclusions Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm Srinivasarao Thota, Thulasi Bikku, Rakshitha T The manuscript presents a novel and practical hybrid optimization framework that combines Dynamic Programming-based Matrix Chain Multiplication (MCM) with Strassen’s Algorithm. The paper demonstrates significant contributions in terms of computational efficiency, reduced memory usage, and real-world applicability. The authors have implemented the hybrid model with robust experimental validation and well-documented algorithms. Review comments: The paper introduces a hybrid optimization framework that smartly integrates MCM with Strassen’s Algorithm. This approach is novel and significantly improves computational performance while maintaining numerical integrity for large matrices. The authors clearly articulate the limitations of traditional MCM and Strassen’s algorithm when used individually, thus justifying the need for a hybrid approach. The pseudocode for matrix_chain_order , strassen_matrix_multiply , and the hybrid multiplication routine is clearly written, logically structured, and reproducible. The inclusion of performance benchmarks (execution time, memory usage, scalar operations, accuracy) across various matrix sizes provides compelling evidence of the hybrid method's benefits. The detailed step-by-step numerical example enhances understanding and demonstrates the practical application of the hybrid algorithm. The figures (execution time, speedup, scalar multiplication, memory usage, correlation heatmap) visually substantiate the claims and provide insights into the hybrid model’s behavior across scenarios. The selective application of Strassen’s method to matrices with dimensions ≥ 128x128 is a thoughtful design decision that avoids the recursive overhead on smaller matrices. The authors provide links to GitHub and Zenodo for full access to the code and data, promoting transparency and reproducibility in computational research. The background section and references demonstrate familiarity with both foundational and current research trends in matrix multiplication, including modern alternatives to Strassen’s algorithm. The conclusion aptly summarizes the findings and points toward promising future directions such as parallelization and adaptive thresholding for broader applicability. Is the work clearly and accurately presented and does it cite the current literature? Yes Is the study design appropriate and is the work technically sound? Yes Are sufficient details of methods and analysis provided to allow replication by others? Yes If applicable, is the statistical analysis and its interpretation appropriate? Yes Are all the source data underlying the results available to ensure full reproducibility? Yes Are the conclusions drawn adequately supported by the results? Yes Competing Interests No competing interests were disclosed. Reviewer Expertise Algorithms I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard. reply Respond to this report Responses (1) Author Response 27 May 2025 Rakshitha T, Department of Mathematics, Eritrea Institute of Technology, Abardae, Eritrea Thank you for your thoughtful review and kind feedback on our manuscript. We truly appreciate your encouraging remarks and are grateful for your approval. Your insights and support have been incredibly motivating and have significantly contributed to improving the quality of our work. View more View less Competing Interests No reply Respond Report a concern Ainapure B. Peer Review Report For: Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm [version 2; peer review: 4 approved] . F1000Research 2025, 14 :341 ( https://doi.org/10.5256/f1000research.179110.r377063) NOTE: it is important to ensure the information in square brackets after the title is included in this citation. The direct URL for this report is: https://f1000research.com/articles/14-341/v1#referee-response-377063 keyboard_arrow_left Back to all reports Reviewer Report 0 Views copyright © 2025 Shaik R. This is an open access peer review report distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. 15 Apr 2025 | for Version 1 Rajak Shaik , SRM University AP, Mangalagiri, Andhra Pradesh, India 0 Views copyright © 2025 Shaik R. This is an open access peer review report distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. format_quote Cite this report speaker_notes Responses (1) Approved info_outline Alongside their report, reviewers assign a status to the article: Approved The paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved Fundamental flaws in the paper seriously undermine the findings and conclusions Summary of the Work: The manuscript presents a hybrid optimization strategy that combines Matrix Chain Multiplication (MCM) using dynamic programming with Strassen’s Algorithm for selective acceleration of large matrix multiplications. The approach addresses computational inefficiencies inherent in traditional MCM and standalone Strassen’s methods. The hybrid technique is validated through a combination of theoretical analysis, pseudocode implementation, performance benchmarking, and a clear numerical example. The paper is relevant to fields including scientific computing, deep learning, and high-performance matrix operations. Innovation : The integration of Strassen’s algorithm into MCM is a smart optimization strategy that yields tangible performance gains. Clarity of Methodology : The algorithm is clearly described with detailed pseudocode and complexity analysis, making the methodology reproducible. Experimental Rigor : The authors conduct comprehensive benchmarks covering execution time, memory usage, and numerical accuracy. Comparative plots strengthen the conclusions. Balanced Hybridization : The selective application of Strassen’s algorithm based on matrix size (≥128) is well-justified and effectively balances performance and overhead. Applicability : The work is applicable across several domains such as graphics, neural network training, and physics simulations—making it broadly relevant. Reproducibility : The codebase and data are made publicly available through GitHub and Zenodo, aligning with modern best practices in open science. Well-Structured Paper : The manuscript is logically organized, guiding the reader smoothly from problem motivation to algorithm design and results. Numerical Example : The inclusion of a worked-out example with intermediate computations illustrates the real-world practicality of the proposed technique. Graphical Comparisons : Figures such as execution time charts, memory comparisons, and a correlation heatmap visually reinforce the paper’s findings. Future Scope : The conclusion thoughtfully outlines future directions including parallelization and adaptive thresholds, highlighting the research’s extensibility. Minor Suggestions (Optional Enhancements for a Revised Version) While I recommend acceptance as-is, the authors may consider the following enhancements in future iterations: Elaborate on the numerical stability trade-offs when using Strassen’s Algorithm in floating-point computations. Explore adaptive thresholding mechanisms in more detail, possibly as an appendix or supplementary material. Include a brief comparison with more recent fast matrix multiplication techniques like Coppersmith-Winograd or Karatsuba-like methods in the background. Final Recommendation: The manuscript makes a valuable contribution to computational optimization in matrix algebra. It is well-written, methodologically sound, and thoroughly validated. I recommend this paper for acceptance without revisions. Is the work clearly and accurately presented and does it cite the current literature? Yes Is the study design appropriate and is the work technically sound? Yes Are sufficient details of methods and analysis provided to allow replication by others? Yes If applicable, is the statistical analysis and its interpretation appropriate? Yes Are all the source data underlying the results available to ensure full reproducibility? Yes Are the conclusions drawn adequately supported by the results? Yes Competing Interests No competing interests were disclosed. Reviewer Expertise AI & ML I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard. reply Respond to this report Responses (1) Author Response 27 May 2025 Rakshitha T, Department of Mathematics, Eritrea Institute of Technology, Abardae, Eritrea Thank you for your thoughtful review and positive feedback on our manuscript. We sincerely appreciate your encouraging comments and are grateful for your approval. Your insights and support have been highly motivating and have contributed to enhancing the quality of our work. View more View less Competing Interests No reply Respond Report a concern Shaik R. Peer Review Report For: Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm [version 2; peer review: 4 approved] . F1000Research 2025, 14 :341 ( https://doi.org/10.5256/f1000research.179110.r377065) NOTE: it is important to ensure the information in square brackets after the title is included in this citation. The direct URL for this report is: https://f1000research.com/articles/14-341/v1#referee-response-377065 keyboard_arrow_left Back to all reports Reviewer Report 0 Views copyright © 2025 Singamaneni K. This is an open access peer review report distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. 15 Apr 2025 | for Version 1 Kranthi Kumar Singamaneni , Symbiosis Institute of Technology, Hyderabad, India 0 Views copyright © 2025 Singamaneni K. This is an open access peer review report distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. format_quote Cite this report speaker_notes Responses (1) Approved info_outline Alongside their report, reviewers assign a status to the article: Approved The paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved Fundamental flaws in the paper seriously undermine the findings and conclusions Title: Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm Authors: Srinivasarao Thota, Thulasi Bikku, Rakshitha T This article is a well-structured and methodologically sound study that integrates Strassen’s Algorithm into the traditional Matrix Chain Multiplication (MCM) optimization framework. Comments: Clear Motivation & Problem Statement: Addresses computational inefficiencies in standard MCM (O(n³) time). Identifies Strassen’s Algorithm (O(n^2.81)) as a viable method to accelerate large matrix multiplications. Innovative Hybrid Approach: Combines Dynamic Programming (DP) for optimal matrix order selection. Applies Strassen’s Algorithm conditionally for matrix dimensions ≥128×128 to avoid unnecessary overhead. Introduces memory-efficient techniques using rolling DP arrays. Algorithm & Pseudocode: Well-structured Python code for MCM-DP and Strassen’s recursive multiplication. Implements hybrid decision-making for performance tuning. Ready-to-run and reproducible with publicly available code (GitHub, Zenodo). Use of Numerical Example: Provides a complete walkthrough with four sample matrices. Demonstrates cost calculations, order of operations, and execution trace. Data Transparency & Open Science: Source code available under GPL-3.0 license on GitHub. Dataset and figures provided via Zenodo. Heatmaps and comparative charts (Figures 1–8) provide strong visual insights. This paper introduces a practical and efficient hybrid technique for matrix chain multiplication that is well-supported theoretically and empirically . It is especially suitable for large-scale, performance-sensitive computing domains such as scientific simulations and deep learning. The paper is complete, methodically presented, and ready for getting indexed in bibliographic databases. Is the work clearly and accurately presented and does it cite the current literature? Yes Is the study design appropriate and is the work technically sound? Yes Are sufficient details of methods and analysis provided to allow replication by others? Yes If applicable, is the statistical analysis and its interpretation appropriate? Partly Are all the source data underlying the results available to ensure full reproducibility? Yes Are the conclusions drawn adequately supported by the results? Yes References 1. Thota S, Bikku T, T R: Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm. F1000Research . 2025; 14 . Publisher Full Text Competing Interests No competing interests were disclosed. Reviewer Expertise Quantum Computing, Cyber Security, Data Analytics I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard. reply Respond to this report Responses (1) Author Response 21 Apr 2025 Rakshitha T, Department of Mathematics, Eritrea Institute of Technology, Abardae, Eritrea Thank you for your thoughtful review and positive feedback on our manuscript. We sincerely appreciate your encouraging comments and are grateful for your approval. Your insights and support have been highly motivating and have contributed to enhancing the quality of our work. View more View less Competing Interests No reply Respond Report a concern Singamaneni KK. Peer Review Report For: Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm [version 2; peer review: 4 approved] . F1000Research 2025, 14 :341 ( https://doi.org/10.5256/f1000research.179110.r377061) NOTE: it is important to ensure the information in square brackets after the title is included in this citation. The direct URL for this report is: https://f1000research.com/articles/14-341/v1#referee-response-377061 keyboard_arrow_left Back to all reports Reviewer Report 0 Views copyright © 2025 Dinka T. This is an open access peer review report distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. 15 Apr 2025 | for Version 1 Tekle Gemechu Dinka , Applied Mathematics, Adama Science and Technology University, Adama, Oromia, Ethiopia 0 Views copyright © 2025 Dinka T. This is an open access peer review report distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. format_quote Cite this report speaker_notes Responses (1) Approved With Reservations info_outline Alongside their report, reviewers assign a status to the article: Approved The paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved Fundamental flaws in the paper seriously undermine the findings and conclusions Review Report Title: Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm Authors: Srinivasarao Thota, Thulasi Bikku, Rakshitha T Recommendation: ACCEPTED , with Revisions Required! (Approved With Reservation) 1) General Comment: Dear authors, your work seems so interesting, well done! The background (abstract), the methods, results and conclusions parts all sound good. But, please check the clarity and or achievement of overall works (all parts, results in tables & graphs), check journal styles, use of references….before publication! Also, consider all associated comments! Check all mathematical equations in the paper! 2) It seems your introduction is not so detail. To increase readability or quality of your work, you may say more on the past works and current researches focusing on the MCM technique and or Strassen’s algorithms (including improvements or drawbacks), if any (Optional!). You can consider some of listed references below! 3) Please use equation numbering for the equations, in your paper. 4) What are i & j in cost equation on page 3? 5) The section on “Strassen’s algorithm for matrix multiplication” on page 4, needs corrections. In the four divisions of matrices A & B , the first division of first equation has to be rewritten (check the first equation to give corrections!). In the Strassen’s algorithm, also there should be included, the product matrix C, such that C = AB, and Please check it all, on page 4! 6) In combining MCM and strassen’s algorithm to get your proposed method, on page 5, where is the mathematical formulation? Otherwise, how was the code for hybrid algorithm written? Try to think over! 7) In subsection 3.2, first sentence, rewrite as, "we provide the time complexity analysis of the… 8) What is your evidence for the following (on page 6, second paragraph)? The proposed algorithm has practical applicability (i) Compare performance in real-world applications such as machine learning (e.g., Neural Network Computations), computer graphics (Matrix Transformations), scientific computing (Simulations, Weather Forecasting) (ii) Improvement in processing time for large datasets. You may give references. 9) Strassen’s algorithm reduces computation cost complexity from O(n^3) to O(n^2.81). And also from eight to seven multiplications. What about your hybrid method? Where /what is the order of reduction? 10) In figure 1, why the maximum value from vertical y-axis is 1? Or why Range = [0, 1]? Otherwise, vertical axis must represent mean relative error, not mean absolute error. Please, may you, check it! 11) In figure 2, hybrid method and strassen’s algorithm are of O(n^2.81). So where is the complexity reduction? How is the improvement? Otherwise, why your method is more efficient or more accurate? Describe clearly how good memory usage of your method made it perform better. 12) On page 9, in last paragraph, rewrite as “figure 5” it is not figure 6. 13) On page 10, below figure 6, rewrite as “one can observe that…. Good Luck! You may refer the following (It is good to do but Optional!) 1. Strassen, Volker (1969 [Ref-1]). "Gaussian Elimination is not Optimal". Numer. Math. 13 (4): 354–356. doi : 10.1007/BF02165411 . S2CID 121656251 . 2. Skiena, Steven S. (1998), "§8.2.3 Matrix multiplication", The Algorithm Design Manual, Berlin, New York: Springer-Verlag , ISBN 978-0-387-94860-7 . 3. D'Alberto, Paolo; Nicolau, Alexandru (2005). Using Recursion to Boost ATLAS's Performance (PDF). Sixth Int'l Symp. on High Performance Computing. 4. Huang, Jianyu; Smith, Tyler M.; Henry, Greg M.; van de Geijn, Robert A. (13 Nov 2016). Strassen's Algorithm Reloaded . SC16: The International Conference for High Performance Computing, Networking, Storage and Analysis . IEEE Press. pp. 690–701. doi : 10.1109/SC.2016.58 . ISBN 9781467388153 . Retrieved 1 Nov 2022. 5. Winograd, S. (October 1971 [Ref-2]). "On multiplication of 2 × 2 matrices" . Linear Algebra and Its Applications. 4 (4): 381–388. doi : 10.1016/0024-3795(71)90009-7 . 6. Karstadt, Elaye; Schwartz, Oded (2017-07-24). "Matrix Multiplication, a Little Faster" . Proceedings of the 29th ACM Symposium on Parallelism in Algorithms and Architectures. ACM. pp. 101–110. doi : 10.1145/3087556.3087579 . ISBN 978-1-4503-4593-4 . Is the work clearly and accurately presented and does it cite the current literature? Yes Is the study design appropriate and is the work technically sound? Yes Are sufficient details of methods and analysis provided to allow replication by others? Yes If applicable, is the statistical analysis and its interpretation appropriate? Not applicable Are all the source data underlying the results available to ensure full reproducibility? Partly Are the conclusions drawn adequately supported by the results? Yes References 1. Strassen V: Gaussian elimination is not optimal. Numerische Mathematik . 1969; 13 (4): 354-356 Publisher Full Text 2. Winograd S: On multiplication of 2 × 2 matrices. Linear Algebra and its Applications . 1971; 4 (4): 381-388 Publisher Full Text Competing Interests No competing interests were disclosed. Reviewer Expertise Applied Mathematics I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard, however I have significant reservations, as outlined above. reply Respond to this report Responses (1) Author Response 27 May 2025 Rakshitha T, Department of Mathematics, Eritrea Institute of Technology, Abardae, Eritrea 1. As per the comment from the reviewer, we have revised all the mathematical equations in the paper. 2. The introduction section is revised and includes more details in the revised version. 3. Equation numbers are given wherever required in the revised manuscript. 4. i is the starting index of the subchain of matrices (i.e., matrix A i ), and j is the ending index of the subchain of matrices (i.e., matrix A j ). This information is included in the revised manuscript. 5. Matrices are replaced with the correct notations A and C as suggested by the reviewer. 6. The hybrid algorithm is a process that consists of two main phases: Matrix Chain Order Optimization and Strassen’s Algorithm. These are explained in Sections 2.1 and 2.2. The hybrid algorithm is given in Section 3. 7. As per the suggestion, we have written the sentence. 8. As per the comment, we have included some references and cited them in the introduction section. 9. The hybrid method uses matrix chain multiplication and Strassen’s algorithm to reduce the time complexity of the matrix multiplication. The hybrid algorithm contains seven multiplications instead of eight multiplications. 10. The vertical y-axis in Figure 1 is capped at 1 because the range [0, 1] typically represents a normalized scale, often used for relative errors or percent errors. If it shows mean absolute error, values close to or up to 1 imply that errors are nearly as large as the actual values-unrealistic in high-precision tasks. Therefore, either the plot shows mean relative error, not mean absolute error, or the y-axis is misleadingly scaled, and the label needs correction. 11. The proposed hybrid method is more efficient because it smartly reduces total operations using MCM, and uses Strassen only when beneficial, while maintaining low memory usage-leading to real-world speedups and better numerical stability. 12. Updated in the revised manuscript. 13. As per the valuable comment from the reviewer, we have updated it. View more View less Competing Interests No reply Respond Report a concern Dinka TG. Peer Review Report For: Hybrid optimization technique for matrix chain multiplication using Strassen’s algorithm [version 2; peer review: 4 approved] . F1000Research 2025, 14 :341 ( https://doi.org/10.5256/f1000research.179110.r374494) NOTE: it is important to ensure the information in square brackets after the title is included in this citation. The direct URL for this report is: https://f1000research.com/articles/14-341/v1#referee-response-374494 Alongside their report, reviewers assign a status to the article: Approved - the paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations - A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved - fundamental flaws in the paper seriously undermine the findings and conclusions Adjust parameters to alter display View on desktop for interactive features Includes Interactive Elements View on desktop for interactive features Competing Interests Policy Provide sufficient details of any financial or non-financial competing interests to enable users to assess whether your comments might lead a reasonable person to question your impartiality. Consider the following examples, but note that this is not an exhaustive list: Examples of 'Non-Financial Competing Interests' Within the past 4 years, you have held joint grants, published or collaborated with any of the authors of the selected paper. You have a close personal relationship (e.g. parent, spouse, sibling, or domestic partner) with any of the authors. You are a close professional associate of any of the authors (e.g. scientific mentor, recent student). You work at the same institute as any of the authors. You hope/expect to benefit (e.g. favour or employment) as a result of your submission. You are an Editor for the journal in which the article is published. Examples of 'Financial Competing Interests' You expect to receive, or in the past 4 years have received, any of the following from any commercial organisation that may gain financially from your submission: a salary, fees, funding, reimbursements. You expect to receive, or in the past 4 years have received, shared grant support or other funding with any of the authors. You hold, or are currently applying for, any patents or significant stocks/shares relating to the subject matter of the paper you are commenting on. Stay Updated Sign up for content alerts and receive a weekly or monthly email with all newly published articles Register with F1000Research Already registered? Sign in Not now, thanks close PLEASE NOTE If you are an AUTHOR of this article, please check that you signed in with the account associated with this article otherwise we cannot automatically identify your role as an author and your comment will be labelled as a “User Comment”. If you are a REVIEWER of this article, please check that you have signed in with the account associated with this article and then go to your account to submit your report, please do not post your review here. If you do not have access to your original account, please contact us . All commenters must hold a formal affiliation as per our Policies . The information that you give us will be displayed next to your comment. User comments must be in English, comprehensible and relevant to the article under discussion. We reserve the right to remove any comments that we consider to be inappropriate, offensive or otherwise in breach of the User Comment Terms and Conditions . Commenters must not use a comment for personal attacks. When criticisms of the article are based on unpublished data, the data should be made available. I accept the User Comment Terms and Conditions Please confirm that you accept the User Comment Terms and Conditions. Affiliation ✕ refresh Please enter your institution. Note: To add your institution or organisation, start typing the name and then select the correct name from the list. Where applicable, the name will appear in both the original language and in English. Do not paste in the name. If the name does not appear in the drop-down list, we will display the information you have entered. ✕ refresh Country/Region * USA UK Canada China France Germany Afghanistan Aland Islands Albania Algeria American Samoa Andorra Angola Anguilla Antarctica Antigua and Barbuda Argentina Armenia Aruba Australia Austria Azerbaijan Bahamas Bahrain Bangladesh Barbados Belarus Belgium Belize Benin Bermuda Bhutan Bolivia Bosnia and Herzegovina Botswana Bouvet Island Brazil British Indian Ocean Territory British Virgin Islands Brunei Bulgaria Burkina Faso Burundi Cambodia Cameroon Canada Cape Verde Cayman Islands Central African Republic Chad Chile China Christmas Island Cocos (Keeling) Islands Colombia Comoros Congo Cook Islands Costa Rica Cote d'Ivoire Croatia Cuba Cyprus Czech Republic Democratic Republic of the Congo Denmark Djibouti Dominica Dominican Republic Ecuador Egypt El Salvador Equatorial Guinea Eritrea Estonia Ethiopia Falkland Islands Faroe Islands Federated States of Micronesia Fiji Finland France French Guiana French Polynesia French Southern Territories Gabon Georgia Germany Ghana Gibraltar Greece Greenland Grenada Guadeloupe Guam Guatemala Guernsey Guinea Guinea-Bissau Guyana Haiti Heard Island and Mcdonald Islands Holy See (Vatican City State) Honduras Hong Kong Hungary Iceland India Indonesia Iran Iraq Ireland Israel Italy Jamaica Japan Jersey Jordan Kazakhstan Kenya Kiribati Kosovo (Serbia and Montenegro) Kuwait Kyrgyzstan Lao People's Democratic Republic Latvia Lebanon Lesotho Liberia Libya Liechtenstein Lithuania Luxembourg Macao Madagascar Malawi Malaysia Maldives Mali Malta Marshall Islands Martinique Mauritania Mauritius Mayotte Mexico Minor Outlying Islands of the United States Moldova Monaco Mongolia Montenegro Montserrat Morocco Mozambique Myanmar Namibia Nauru Nepal Netherlands Antilles New Caledonia New Zealand Nicaragua Niger Nigeria Niue Norfolk Island North Korea North Macedonia Northern Mariana Islands Norway Oman Pakistan Palau Palestinian Territory Panama Papua New Guinea Paraguay Peru Philippines Pitcairn Poland Portugal Puerto Rico Qatar Reunion Romania Russian Federation Rwanda Saint Helena Saint Kitts and Nevis Saint Lucia Saint Pierre and Miquelon Saint Vincent and the Grenadines Samoa San Marino Sao Tome and Principe Saudi Arabia Senegal Serbia Seychelles Sierra Leone Singapore Slovakia Slovenia Solomon Islands Somalia South Africa South Georgia and the South Sandwich Is South Korea South Sudan Spain Sri Lanka Sudan Suriname Svalbard and Jan Mayen Swaziland Sweden Switzerland Syria Taiwan Tajikistan Tanzania Thailand The Gambia The Netherlands Timor-Leste Togo Tokelau Tonga Trinidad and Tobago Tunisia Turkey Turkmenistan Turks and Caicos Islands Tuvalu UK USA Uganda Ukraine United Arab Emirates United States Virgin Islands Uruguay Uzbekistan Vanuatu Venezuela Vietnam Wallis and Futuna West Bank and Gaza Strip Western Sahara Yemen Zambia Zimbabwe Please select your country/region. You must enter a comment. Competing Interests Please disclose any competing interests that might be construed to influence your judgment of the article's or peer review report's validity or importance. Competing Interests Policy Provide sufficient details of any financial or non-financial competing interests to enable users to assess whether your comments might lead a reasonable person to question your impartiality. Consider the following examples, but note that this is not an exhaustive list: Examples of 'Non-Financial Competing Interests' Within the past 4 years, you have held joint grants, published or collaborated with any of the authors of the selected paper. You have a close personal relationship (e.g. parent, spouse, sibling, or domestic partner) with any of the authors. You are a close professional associate of any of the authors (e.g. scientific mentor, recent student). You work at the same institute as any of the authors. You hope/expect to benefit (e.g. favour or employment) as a result of your submission. You are an Editor for the journal in which the article is published. Examples of 'Financial Competing Interests' You expect to receive, or in the past 4 years have received, any of the following from any commercial organisation that may gain financially from your submission: a salary, fees, funding, reimbursements. You expect to receive, or in the past 4 years have received, shared grant support or other funding with any of the authors. You hold, or are currently applying for, any patents or significant stocks/shares relating to the subject matter of the paper you are commenting on. Please state your competing interests The comment has been saved. An error has occurred. Please try again. Cancel Post var lTitle = "Hybrid optimization technique for matrix...".replace("'", ''); var linkedInUrl = "http://www.linkedin.com/shareArticle?url=https://f1000research.com/articles/14-341/v2" + "&title=" + encodeURIComponent(lTitle) + "&summary=" + encodeURIComponent('Read the article by '); var deliciousUrl = "https://del.icio.us/post?url=https://f1000research.com/articles/14-341/v2&title=" + encodeURIComponent(lTitle); var redditUrl = "http://reddit.com/submit?url=https://f1000research.com/articles/14-341/v2" + "&title=" + encodeURIComponent(lTitle); linkedInUrl += encodeURIComponent('Thota S et al.'); var offsetTop = /chrome/i.test( navigator.userAgent ) ? 4 : -10; var addthis_config = { ui_offset_top: offsetTop, services_compact : "facebook,twitter,www.linkedin.com,www.mendeley.com,reddit.com", services_expanded : "facebook,twitter,www.linkedin.com,www.mendeley.com,reddit.com", services_custom : [ { name: "LinkedIn", url: linkedInUrl, icon:"/img/icon/at_linkedin.svg" }, { name: "Mendeley", url: "http://www.mendeley.com/import/?url=https://f1000research.com/articles/14-341/v2/mendeley", icon:"/img/icon/at_mendeley.svg" }, { name: "Reddit", url: redditUrl, icon:"/img/icon/at_reddit.svg" }, ] }; var addthis_share = { url: "https://f1000research.com/articles/14-341", templates : { twitter : "Hybrid optimization technique for matrix chain multiplication.... Thota S et al., published by " + "@F1000Research" + ", https://f1000research.com/articles/14-341/v2" } }; if (typeof(addthis) != "undefined"){ addthis.addEventListener('addthis.ready', checkCount); addthis.addEventListener('addthis.menu.share', checkCount); } $(".f1r-shares-twitter").attr("href", "https://twitter.com/intent/tweet?text=" + addthis_share.templates.twitter); $(".f1r-shares-facebook").attr("href", "https://www.facebook.com/sharer/sharer.php?u=" + addthis_share.url); $(".f1r-shares-linkedin").attr("href", addthis_config.services_custom[0].url); $(".f1r-shares-reddit").attr("href", addthis_config.services_custom[2].url); $(".f1r-shares-mendelay").attr("href", addthis_config.services_custom[1].url); function checkCount(){ setTimeout(function(){ $(".addthis_button_expanded").each(function(){ var count = $(this).text(); if (count !== "" && count != "0") $(this).removeClass("is-hidden"); else $(this).addClass("is-hidden"); }); }, 1000); } close How to cite this report {{reportCitation}} Cancel Copy Citation Details $(function(){R.ui.buttonDropdowns('.dropdown-for-downloads');}); $(function(){R.ui.toolbarDropdowns('.toolbar-dropdown-for-downloads');}); $.get("/articles/acj/162848/180873") new F1000.Clipboard(); new F1000.ThesaurusTermsDisplay("articles", "article", "180873"); $(document).ready(function() { $( "#frame1" ).on('load', function() { var mydiv = $(this).contents().find("div"); var h = mydiv.height(); console.log(h) }); var tooltipLivingFigure = jQuery(".interactive-living-figure-label .icon-more-info"), titleLivingFigure = tooltipLivingFigure.attr("title"); tooltipLivingFigure.simpletip({ fixed: true, position: ["-115", "30"], baseClass: 'small-tooltip', content:titleLivingFigure + " " }); tooltipLivingFigure.removeAttr("title"); $("body").on("click", ".cite-living-figure", function(e) { e.preventDefault(); var ref = $(this).attr("data-ref"); $(this).closest(".living-figure-list-container").find("#" + ref).fadeIn(200); }); $("body").on("click", ".close-cite-living-figure", function(e) { e.preventDefault(); $(this).closest(".popup-window-wrapper").fadeOut(200); }); $(document).on("mouseup", function(e) { var metricsContainer = $(".article-metrics-popover-wrapper"); if (!metricsContainer.is(e.target) && metricsContainer.has(e.target).length === 0) { $(".article-metrics-close-button").click(); } }); var articleId = $('#articleId').val(); if($("#main-article-count-box").attachArticleMetrics) { $("#main-article-count-box").attachArticleMetrics(articleId, { articleMetricsView: true }); } }); var figshareWidget = $(".new_figshare_widget"); if (figshareWidget.length > 0) { window.figshare.load("f1000", function(Widget) { // Select a tag/tags defined in your page. In this tag we will place the widget. _.map(figshareWidget, function(el){ var widget = new Widget({ articleId: $(el).attr("figshare_articleId") //height:300 // this is the height of the viewer part. [Default: 550] }); widget.initialize(); // initialize the widget widget.mount(el); // mount it in a tag that's on your page // this will save the widget on the global scope for later use from // your JS scripts. This line is optional. //window.widget = widget; }); }); } close Error Close Add Reset F1000.MICROSERVICES.AFFILIATION = ''; $(document).ready(function () { $('.js-affiliations-form').each((index, form) => { new AffiliationForm({ formId: form.id, institutionErrorSelector: '.comment-enter-institution', departmentErrorSelector: '.comment-enter-department', placeSelector: '.js-add-comment-place', stateSelector: '.js-add-comment-state', zipCodeSelector: '.js-add-comment-zipcode', countrySelector: '.js-add-comment-country', countryErrorSelector: '.comment-enter-country', }); }); }); $(document).ready(function () { var reportIds = { "377061": 17, "387461": 14, "374500": 0, "377060": 0, "387460": 0, "377063": 10, "377062": 0, "387462": 0, "374497": 0, "374496": 0, "374499": 0, "377059": 0, "387459": 0, "374498": 0, "377065": 22, "377064": 0, "377067": 0, "377066": 0, "374493": 0, "374492": 0, "374495": 0, "374494": 31, "374491": 0, }; $(".referee-response-container,.js-referee-report").each(function(index, el) { var reportId = $(el).attr("data-reportid"), reportCount = reportIds[reportId] || 0; $(el).find(".comments-count-container,.js-referee-report-views").html(reportCount); }); var uuidInput = $("#article_uuid"), oldUUId = uuidInput.val(), newUUId = "dcabe06b-bb62-4c51-aea7-e1986090669c"; uuidInput.val(newUUId); $("a[href*='article_uuid=']").each(function(index, el) { var newHref = $(el).attr("href").replace(oldUUId, newUUId); $(el).attr("href", newHref); }); }); An innovative open access publishing platform offering rapid publication and open peer review, whilst supporting data deposition and sharing. Browse Gateways Collections How it Works Contact For Developers Cookie Notice Privacy Notice RSS Submit Your Research Follow us © 2012-2026 F1000 Research Ltd. ISSN 2046-1402 | Legal | Partner of Research4Life • CrossRef • ORCID • FAIRSharing R.templateTests.simpleTemplate = R.template(' $text $text $text $text $text '); R.templateTests.runTests(); var F1000platform = new F1000.Platform({ name: "f1000research", displayName: "F1000Research", hostName: "f1000research.com", id: "1", editorialEmail: "
[email protected]", infoEmail: "
[email protected]", usePmcStats: true }); $(function(){R.ui.dropdowns('.dropdown-for-authors, .dropdown-for-about, .dropdown-for-myresearch');}); // $(function(){R.ui.dropdowns('.dropdown-for-referees');}); $(document).ready(function () { if ($(".cookie-warning").is(":visible")) { $(".sticky").css("margin-bottom", "35px"); $(".devices").addClass("devices-and-cookie-warning"); } $(".cookie-warning .close-button").click(function (e) { $(".devices").removeClass("devices-and-cookie-warning"); $(".sticky").css("margin-bottom", "0"); }); $("#tweeter-feed .tweet-message").each(function (i, message) { var self = $(message); self.html(linkify(self.html())); }); $(".partner").on("mouseenter mouseleave", function() { $(this).find(".gray-scale, .colour").toggleClass("is-hidden"); }); }); Sign In Remember me Forgotten your password? Sign In Cancel Email or password not correct. Please try again Please wait... $(function(){ // Note: All the setup needs to run against a name attribute and *not* the id due the clonish // nature of facebox... $("a[id=googleSignInButton]").click(function(event){ event.preventDefault(); $("input[id=oAuthSystem]").val("GOOGLE"); $("form[id=oAuthForm]").submit(); }); $("a[id=facebookSignInButton]").click(function(event){ event.preventDefault(); $("input[id=oAuthSystem]").val("FACEBOOK"); $("form[id=oAuthForm]").submit(); }); $("a[id=orcidSignInButton]").click(function(event){ event.preventDefault(); $("input[id=oAuthSystem]").val("ORCID"); $("form[id=oAuthForm]").submit(); }); }); If you've forgotten your password, please enter your email address below and we'll send you instructions on how to reset your password. The email address should be the one you originally registered with F1000. Email address not valid, please try again You registered with F1000 via Google, so we cannot reset your password. To sign in, please click here . If you still need help with your Google account password, please click here . You registered with F1000 via Facebook, so we cannot reset your password. To sign in, please click here . If you still need help with your Facebook account password, please click here . Code not correct, please try again Reset password Cancel Email us for further assistance. Server error, please try again. If your email address is registered with us, we will email you instructions to reset your password. If you think you should have received this email but it has not arrived, please check your spam filters and/or contact for further assistance. Please wait... Register $(document).ready(function () { signIn.createSignInAsRow($("#sign-in-form-gfb-popup")); $(".target-field").each(function () { var uris = $(this).val().split("/"); if (uris.pop() === "login") { $(this).val(uris.toString().replace(",","/")); } }); });
Text is read by the "Ask this paper" AI Q&A widget below.
Extraction quality varies by source — PMC NXML preserves structure
cleanly, OA-HTML may include some navigation residue, and OA-PDF can
have broken hyphenation. The publisher copy
(via DOI)
is the canonical version.