text:
The Official Site of Author Michael F. Haspil
Quantum Froth Dispatches – Podcast
Miniatures & Hobby
FANX at Salt Lake City
GRAVEYARD SHIFT is out in Trade Paperback today!
It's Been One Year Since the Official Release of GRAVEYARD SHIFT!
Denver Book Bar Science Fiction and Fantasy Reading Series.
Finalist! Colorado Book Award for 2018.
TagGraveyard Shift
GRAVEYARD SHIFT, out in paperback today!
August 14, 2018 / Mike / 0 Comments
Two cops, one an immortal pharaoh, one a Roman vampire. Their mission: stop a vampire conspiracy in modern-day Miami by any means necessary. GRAVEYARD SHIFT is available in trade paperback for the first time today! At bookstores everywhere!
July 18, 2018 / Mike / 0 Comments
GRAVEYARD SHIFT unofficially debuted at Denver Comic Con, but it was officially released one year ago, today! TOR releases the paperback on 14 August, but you can pick up the audiobook now (on sale) from Audible.com and, of course, the Kindle and hardcover versions are still available.
To celebrate the one-year anniversary, here is a selection from MENKAURE, one of the other books in the series (still in-work, I'm sorry to say). Enjoy and let me know what you think on Twitter or Facebook!
The Fall of Inebu-Hedju
Ta Meri, beloved of the gods. Kemet, The Black Land, in the city of Inebu-Hedju. It being a year after the eighth cattle count. It being the start of the sixteenth year of Pharaoh's reign.
This is how Chaos came to beloved Kemet, Realm of Ma'at.
It was the last day of the month of Shemu, the eve of First Akhet.
Far to the south, in the city of Abedju, Pharaoh would be officiating over the last days of the sacred festival to encourage the River's inundation and a bountiful year. Pharaoh did not do many things well. As a king, he was a grand disappointment. But he could revel. He excelled at that with no argument. And this night, he would no doubt seek new levels of carousing and debauchery, blissfully unaware of the peril that threatened the Two Lands.
Lord Meritptah stood on the high temple's outer enclosure and glared at the blue-white conflagration engulfing the city. He ran his hands over the rough whitewashed mudbrick of the wall's lip and struggled to contain his emotions. Actinic flames danced through the houses and huts below, setting everything ablaze. The heat swelled as an ill wind drove the unnatural firestorm farther into the city and closer to the temple wall.
Just beyond the flames, the followers of Isfethotep, those who came out of the desert as well as the newly converted, stood as desert stones. For the moment, they'd ceased their orgiastic bleating and surveyed their handiwork with an unsettling silence. Their high priestess, or sorceress, or demon-witch, distinct even at this distance, had her arms thrown up over her head and gave the impression that the roiling ebon clouds, which swept low and swift, were guided of her volition. Meritptah doubted it. He was more than an initiate in the supernatural arts and never had he heard of works such as these except in tales and legend.
There had to be some trick to it. Some mundane work perhaps enhanced by illusion. He swore at himself for his inability to perceive it. He also cursed the fact that there was no bow powerful enough to reach her. As distinct as she stood against the throng of Isfethotep's cult, her skin the color of bleached bone, both beautiful and terrible to look upon, it would make an easy shot. He wondered with an aloof curiosity what the giant, nearly twice the height of a Kemeti man, at her side would do if arrows and sling stones pelted the woman. Somehow, he suspected she had an answer for that as well.
She demonstrated her power earlier. When Re still shone high in the sky, her messenger came to the gate dressed in the garb of desert dwellers who knew not the true gods of Kemet. He threatened that they had only hours to quit the city or declare for Isfethotep. All those who refused and remained were doomed. The Kemeti scoffed and heckled him until the man collapsed. He lay still as if their mocking shouts had struck the very life from his limbs. When men went to investigate, they screamed with horror and fled for the shelter of the city walls. They reported that the messenger's body was infested with all manner of insects and winged scorpions that buzzed and hissed as they devoured the man's flesh. They wondered how he had lived at all to deliver his threat.
A stone's throw away, sealed pots shattered with explosive force and jerked Meritptah's attention back to the present predicament. The flames made no sound themselves, which only added credence to his supposition they were supernatural. The silent blaze amplified every other sound with preternatural clarity. Meritptah imagined he could even hear the movement of the evil black clouds which marched eastward in time with the sorceress' gestures. The glint of some jewel hanging about her neck caught the rapidly failing golden light of Re's face, splintered it, and reflected it back as violet shards of corruption.
Meritptah glanced over his shoulder and toward Inebu-Hedju's western gate. Throngs of refugees huddled against one another as they evacuated. There were no shouts or speech. People sobbed but it was distant. Dipping just beneath the gate's high arch, the bright golden disk of Re's eye sank reluctantly, as if the god knew His absence through the onset of night would bring countless perils to His children. Beyond the gate, Meritptah could just make out the tall palms that marked the quays and the river walk. Too far to be seen, and shielded from his sight by the trees, lay the sanctuary of the River. Meritptah hoped there would be enough boats to carry all the people, but he already knew there weren't.
"My Lord, we must depart," a quiet resolute voice spoke close to his ear.
Meritptah had been so lost in his thoughts he hadn't seen or heard the priest come to the rooftop.
"The scrolls are secure?" he asked without looking at the man.
"As you instructed, my lord, only those of rare import or of which limited copies are known to exist. I fear we will leave too many…" the man's voice drifted away.
Meritptah turned to see what had stolen his speech. The priest stared slack-jawed at the flames and the destruction. Tears streamed from his eyes.
"Magnificent and horrible is it not?" Meritptah asked rhetorically. "I had no idea, do you understand, no hint that mortals could wield such power. I'd warrant not since Sekhmet threatened the world have there been such magics."
"But we have magic ourselves. We must implore the gods. Surely, they will not–"
"They will not what? Leave us to this fate? We are but their messengers and what power have we when Pharaoh, the Falcon Horus on earth, yet behaves as an indolent child? No. Once we had power such as this, or something near it, I suspect. A scroll that contained all the arcane secrets and lay their mysteries bare. Djehuty made it a gift to us and what did we do? Left it to the care of vain and feeble men. And they lost it." He pounded his fist on the lip of the enclosure wall. "Now, we only interpret dreams, offer aid to the surgeons, and see to the journeys of the dead. Admirable pursuits, but no match for this."
Something in the wind changed and it no longer carried the heat of the flames to the temple. Instead it was chilled and filled with a rank odor.
"My lord, the fire…"
Even as the priest spoke, the flames died out. Meritptah threw his gaze at the sorceress. Her arms were down now and she swept them outwards in preparation for some other ritual, as if readying herself to embrace the entire city. He heard a high-pitched ululating cry, but couldn't be sure it came from her. The sound stopped and he saw her clap her hands together. Then she repeated the sound and the earlier wide-armed gesture.
The priest next to him could not keep the trepidation from his voice, "My lord, we must go. She is working some new spell. I cannot bear to see it." The man was already backing down the stairs that led to the inner sanctum of the high temple.
"Go. I will join you presently," Meritptah said, his teeth chattering from the cold. Goosebumps broke out on his bare chest, arms, and belly. Something kept him there. He needed to witness this, even if it brought about his own destruction. The wind increased in time with her movements as if fanned by her arms.
"My lord, you must come. The boat awaits us on the River."
Meritptah waved the man away. He saw the woman repeat the gesture a third time, and yet again her appeal issued forth. Below and off to his left, some thing answered. Many somethings. And he knew the sound. His stomach turned to lead – a great weight that would keep him rooted to the spot until an impure death came to claim him.
He'd heard it once. Long ago. So long it might have been in another world, in another life. It had been the night his uncle and father had perished. They'd been working some formula they'd discovered, something incomplete, yet his uncle had been so sure…
Young Meritptah had gone to spy on their works and he'd heard the sound then. The coughing-cackling chittering that shot shards of pain into his spine even now.
"No. It cannot be," he heard himself say, as if someone else were shouting the words over a great distance.
Then he was pushing past the priest and running down into the inner sanctum.
"Light the lamps. Set fire to anything that will make light. It is our last hope," he shouted at the dumbfounded priests who were still packing delicate papyri scrolls into cedar chests.
"Leave the scrolls. Leave everything. To the River," he urged them.
The priest who had been with him on the rooftop finally reached his side. "My lord, what is it?"
"Did you not hear?" Meritptah sped through the altar-space of the high temple. He snatched an oil lamp from its mounting and swept it at every nearby shadow ready for battle.
"Aye, Lord. The cry of some beasts in the north."
"Not beasts, you fool. Yfrit!"
The priest looked at him with suspicion. "Demons from the sands? Surely you're mistaken."
"Tell me after everything we've witnessed today that you doubt me." Meritptah glared at the priest daring him to deny it. "I tell you that if we see the sun set while yet in this city, we shall never see it rise again. Now run. Tell everyone to seek the River and carry lamps. The demons will shun the light."
The priest, visibly sobered by Meritptah's appeal, nodded his assent.
"Fire and light must be our allies now. Every man must carry a lamp."
Meritptah ran out of the altar-space and into the cloister that separated the inner sanctum from the priests' quarters. He dared to steal a glance skyward. Directly above, the clouds boiled low and swirled like dark dye in water. Green and blue bolts of lightning punctuated their sweeping movements. It was as if the sky itself had been changed into a massive turbulent cauldron and an unseen hand vigorously stirred the contents within. To the west, the remains of the golden light of Re turned purple and heralded the onset of night. The sorceress had planned her attack well. There was so little time to reach the River before Re's protection was gone.
Yet Meritptah had one more errand to perform. He slammed open the door to his quarters catching his body servant by surprise. The man gave out a yelp of terror but had no further time to react before Meritptah crammed the lamp into his hand.
"Hold this." Meritptah moved to a stack of chests and with strength born of panic, swept the top chests aside. He flung open the lid of the bottom chest.
Then pain seized his arm. The onset of a seizure. He forced himself to breathe the way the surgeons had shown him, deep and slow. A silent prayer formed on his lips, but he already knew he'd never finish it.
Meritptah lay on his back, aware of his body servant at his side holding his hand and urging him to sit up and drink water. Some time had passed.
"Not long, my lord. You closed your eyes but an instant."
A small seizure then. But Meritptah knew better than to think it had passed. These smaller fits only served as heralds to larger ones. He fought the urge to race outdoors and see how much sunlight yet remained. It would do little good.
"Help me." He crawled on all fours towards the open cedar chest and sifted through the detritus of his youth.
"What is it you seek, Lord?"
"An amulet. A plain thing. A totem to allay the fears of a child. There's a chance…"
His grandmother had made it for him in the wake of his father's death, so that he needn't fear the dark. A ward that kept Yfrit at bay. That's what she'd told him. He prayed now that the old and pious woman had been speaking truth and hadn't been trying to placate him with a sense of false security.
His hand clasped a round flat object. The thin copper disk showed signs of neglect and verdigris obscured some of the marks upon it. The leather cord that ran through it was worn and stained dark from sweat and long years of wear. Meritptah spat on his thumb and tried to rub some of the corrosion from the surface, but it had no effect. He prayed it wouldn't matter and tied the cord around his neck. He remembered the amulet resting above his heart the last time he'd worn it. But that had been long years and many pounds ago. It rested about his neck like a tight collar now. Already he felt a sense of relief and safety. Even if it was false, he silently thanked his grandmother for her gift and promised to visit and refresh her tomb if he survived this ordeal.
"Help me up. We must run now. We must make the River while still in the sight of Re."
"What of your effects? We two cannot carry them all." The younger man pulled Meritptah to his feet.
"Leave them." Meritptah started for the door.
"And this?" His body servant held up the leopard skin that denoted Meritptah's status as the Sem-priest.
Meritptah considered for a moment. Without it, he would be indistinguishable from the rabble. He'd need it. Who knew what disorder now reigned at the ship landings? And it would only grow as night crept on from the east.
"Bring it. Give me that lamp." The man handed the lamp to him. "Now take one for yourself and come. The strength has not yet returned to me. I will need the power in your young legs."
Meritptah swung an arm around the man's shoulders and the two hobbled out of the room and back into the cloister.
Other priests were about now. Some of them carrying holy relics and sacred artifacts they deemed too precious to leave to defiling hands.
"The River!" Meritptah yelled. "Make the River with all haste. Leave your burdens, the gods will understand."
Whether they chose not to heed him or simply didn't hear, he couldn't tell. He felt almost beyond caring.
Then they were out into the main avenue that led to the west gate.
Men, children, and women walked unhurriedly, their faces set in grim masks, many of them weeping. They clung to whatever meager possessions they'd had time to secure.
Meritptah's body servant began pushing through them. For some reason, the throng was not nearly as thick as it had appeared from the rooftop. He couldn't be sure if this was because they were ahead of most of the refugees or if this was the remains of those who but lately sought to flee the city. He sent a silent prayer to Ptah and Horus that the temple boat had not yet departed the landing.
He watched the last sliver of the solar disk slip behind the hills on the western bank of the River and his heart sank. It was a race against the true dark of night now. The boat was too far, and even were he young and hale and not overburdened by an indulgent belly, he would not have reached it before the last light disappeared.
He stole a sideways glance. His breath caught in his chest. In the alleyways between the buildings that crowded the avenue, amid the deeper shadows, he could see them. Not distinctly, he doubted any man would see them and still live with his heart and soul intact. But he could make out inky silhouette blots of pure black moving within the gloom. They paced and pawed at the gritty ground and hooted and gibbered in anticipation. And then Re was gone. And the Yfrit dove into the crowd with howls of derisive savagery.
They caught the refugees completely unawares. Meritptah felt the first victims perish rather than saw or heard anything as the Yfrit struck poor unfortunates and they burst into showers of viscera and gore. Then the herd of people, like lambs hunted by lions, panicked and surged forward. They ran blindly for the most part as only a few carried lamps.
Men smashed into Meritptah and his body servant, sending the two of them sprawling. The body servant's lamp flew from his hands and crashed to the ground several paces away. The man extricated himself from Meritptah's grip. Meritptah tried to crawl forward, his own lamp clutched in his left hand, but more and more panicked men and women struck him and they too fell in heaps.
Someone stepped on his right hand. He turned to look and was kicked in the face for his trouble. The crowd would trample him if he could not stand. He forced himself to all fours and shouted curses into the night and at his frail form. He made it to one knee and held his lamp high. The scheme worked and the crowd parted around him. Meritptah swung his gaze about and saw his body servant. The man crawled, bloodied, on all fours within arm's reach of his fallen lamp. Just as he was about to reach it, the foot of some fear-crazed passerby struck it aside. The flame, already guttering, went out. His body servant now lay at the very faintest edge of Meritptah's oasis of light.
Their eyes met, the man's reflecting the terrible knowledge Meritptah held. Then the massive clawed paw, its ephemeral texture like foul smoke given form, of some crimson-eyed fiend closed over the man's head, and dragged him screaming into the darkness.
Mercifully, the screams did not last long. All around Meritptah, more and more joined the massacre's cacophony.
Dumbfounded, he stood inert, his left arm held aloft like some sentry peering into the night at some unknown sound. The screams of a woman as she prayed to Ptah shook him from his stupor. He sought her out. She knelt on the earth, her arms wrapped around a stripling child. The light from his lamp reached her just as some vapor-formed horror grasped at her from the dark. It snarled and pulled back. Its dark figure boiled away.
She saw him.
"Ptah has sent you, my lord. Thank the god!" she crowed to him. The wide-eyed child so small and gaunt Meritptah could not tell if it was boy or girl.
The effect of the light had not gone unnoticed. More and more people crowded about him threatening to push him to the ground again, while Yfrit howled and roared their indignation from beyond his lamp's influence.
One lamp was not enough.
He thought of the other lamp, the one that lay on the ground but a few feet from here.
"There is another lamp. It fell on the ground. Seek it out and I shall relight it." He shouted over the panicked sobs of the survivors. Full of the authority of his office, his priest's voice, used to oratory and ritual, served him well and calmed the nearby crowd. They needed to be assured someone was in control. The minions of Isfet, the embodiment of Chaos, had won a solid victory this day, but did not hold full sway yet.
Meritptah drew in a deep breath and let it forth with as loud and authoritative an admonition as he could muster toward the nightmares come to life out of the night.
"By the gods Ptah, Asar, Heru, Sekhmet, Aset, and Ma'at. You hold no more power here, demons from out the night. Begone! I, Meritptah, high priest of Ptah, have spoken and my word is His."
To his surprise, his voice bolstered his own courage. The braying and barking of the Yfrit faded as well.
He looked down into the wide eyes of the woman at his side, "Come now, let us find this lamp." After a brief moment to orient himself, he saw the fallen lamp. The ground near it darker than the rest of the street. The woman saw it too and before he could say anything, she had broken away from him, and still towing her child behind her, snatched the lamp and hugged it to her chest.
In a moment, she was back at his side. She held it out to him. "Light it my lord."
He moved his lamp close but before it even touched the wick, the flames flared brightly. In an instant, Meritptah saw first the crack in the faience, then how the woman's arm glistened. Subconsciously he noticed that he could see her breast through the damp linen on her chest. Then it was as if the two of them simultaneously realized the implication of these signs.
"Drop the lamp," Meritptah shouted. It was already too late. The flames jumped up the woman's arm and used her oil-dampened linen dress as an ideal wick. In one horrible moment, she was alight.
"No." Meritptah snatched the child from her death grip and kicked the woman from him. She pirouetted away, fanned flames burning brighter as she thrashed and flailed at the fire that would have brought her salvation moments before.
It was too much for the crowd, full of screams and cries of terror and dread. Meritptah was once again struck to the earth. Then he felt fingers prying his off the lamp.
"No. You fools. You fools. May Apep have you."
Someone kicked him in the face and he tasted dirt and blood. Then the lamp was gone.
The woman's child ripped itself away from him and ran, only to be snatched in the coils of some bat-winged monstrosity and carried off into the fetid air.
Meritptah's hand sought and found his grandmother's amulet. He fumbled for it as the Yfrit exploited the moment and renewed the carnage. The charm still clung on his upper chest and he gripped it so hard it dug into his skin.
He crawled. The stink of burning flesh and offal filled his nostrils. The witch's black clouds shielded the stars and even Khonsu, the moon. He could see almost nothing yet squeezed his eyes shut despite that. Demon Yfrit slunk around him their evil breath chuffed like hyenas. Fear governed his heart to such an extent even the prayers he spoke daily fled his thoughts. He was a boy again. A boy who'd heard his uncle call up something he shouldn't have out of–
"There. Is that not Lord Meritptah?" a voice called out.
Meritptah did not answer for fear that it was some trick to fill his heart with false hope.
"My lord? Do you yet live?"
He dared open an eye and saw the avenue bathed in light. He rolled to one side and stared at a group of temple priests, each of them holding lamps or torches. Their arms encumbered with scrolls, statues, and small chests.
"Aye. Thanks to you and the gods. Come, we must make the River. Pray to the gods that the temple boat has not departed."
A few priests helped him to his feet. Then they noticed the body parts, blood, detritus, and other parts not so easily recognized.
"My lord, what has happened?"
"It is best you do not know. Now we must hurry." With a priest under each arm, Meritptah urged the party forward. They moved swiftly but as if in a dream. He saw no details. Just the lamps around him and ahead, fires beckoned where people must have set them at the landings. It seemed that before Meritptah could ponder more, the party of priests caught up to a group of stragglers and both groups stumbled into the oasis of light at the boat landings.
A strong voice shouted out his name. "Lord Meritptah. We are here."
The shipmaster of the temple boat stood high on the stern. He held an oar in his hand as a makeshift spear and swatted and pushed at a hoard of people who pressed near.
"Get back. Back. Let the high priest through."
Much to Meritptah's surprise, the people, battered and cowed, parted.
Sailors extended their hands to the priests and pulled them aboard.
The shipmaster found Meritptah. "We've had a hard night of it. Didn't think you'd make it. We've been ferrying people to the western shore, so they'll at least have the River to sunder them from those fanatics and their sorcery."
"What is wrong with the water?" Meritptah asked. It churned with white-capped waves and random splashes as he looked at it.
"Sobek has forsaken us I fear. His creatures are too perceptive this night. Earlier, some men tried to swim the river. They were strong and swam swiftly, but not so swiftly as the crocodiles. And now their brothers come to join the feasting." He pointed at the seething water.
"It is too much," Meritptah said. "Bring us across, then I shall send you back to ferry as many as you can. We will set fires on the western shore and stand vigil. In the morn, we shall sail south to Abedju and tell Pharaoh of this evil dream come to the waking world."
"Aye." The shipmaster turned to shout orders to his crew. "Let loose the lines…" The words died on his lips.
"What fresh horror is this?" Meritptah asked.
Men walked out of the darkness. Quiet as river mist they strode forward as one. Moving in lockstep and in pace in a manner so singular, Meritptah doubted that the most disciplined of Pharaoh's guards could have recreated the effect. It was as if they were entranced. They stood at the edge of the firelight. Then Meritptah saw her.
She stepped forward, graceful and unafraid, the giant at her side.
"I speak to you now, Priest of Impotent Gods." Her voice was clear and lyrical. Meritptah almost wished she would go on speaking, for he felt a sense of loss when the echoes of her speech had faded.
"Go. Go and tell your king and others of your ilk. Their time is ended. I command you."
Meritptah heard and almost nodded in assent. Then pride swelled in his heart and he reminded himself of his station. How dare some upstart, uncivilized bitch speak to him in such a manner?
"You are a barbarian and a savage. Who dares to address me?"
"I have taken the name Neitikret so that you may easily understand who now rules you. I am the High Priestess of Isfethotep, companion of King Knephren-Ka, and your new master." The giant at her side threw back his head and grunted a challenge at the sound of his name. As easily as she had singled out Meritptah in the throng, she turned her attention from him. His heart felt a pang as of lost love in his youth. There was some powerful glamor at work here, but knowledge of its existence did not grant him the power to resist it.
"To the rest of you rabble, kneel now and accept Isfethotep and his ways and you will be rewarded with a thousand pleasures. Defy us and…" She let the threat go unfinished but punctuated her statement with a devious smile.
Meritptah was both entranced and repulsed by it. He couldn't look away.
No one in the crowd of refugees stirred. A long moment passed.
"Very well," Neitikret said. Her hands reached up and cupped the jewel which hung between her immaculate breasts. She held her hands and the jewel to her mouth, pursed her lips and blew a short powerful breath.
Immediately, the fires and lamps blew out, plunging the world into darkness.
The Yfrit fell into the crowd with triumphant roars of lust and gluttony.
Then the boat lurched crazily to the shore and Meritptah heard the shipmaster shouting, though how the man could see anything was beyond him.
"Push them off. Push them off. They will swamp us."
Then the night became a cacophony of shouted screams, bestial noises, and the sounds of wooden oars pounding broken flesh from the side. The boat lurched to the other side as it tore free from the rest of the crowd. Someone on deck managed to relight a lamp and Meritptah wished he hadn't.
He had time to see the shredded remains of the crowd surging aimlessly in all directions as the giant Knephren-Ka struck them with a long terrible gore-covered sword. Others saw the light from the lamp and fleeing the Yfrit at their rear, charged headlong into the river and into the jaws of the frenzied crocodiles.
Then Neitikret was there at the landing. A beacon in the darkness. She shouted something, but the sound did not reach his ears.
It was hard to hear anything over the damned Yfrit and the terrible splashing in the water.
A priest at his side set his jaw in grim determination. "Pharaoh will hear of this. And he shall come with his armies and the sight of our gods and woe be unto them in that hour."
Meritptah looked at the man and shook his head in disbelief. As the boat moved beyond the view of the ruined city and the continuing slaughter, Meritptah wondered just which Pharaoh the priest had in mind.
Boulder BookStore — It's Kind of a Big Deal.
November 24, 2017 / Mike / 2 Comments
Doing a signing at the Boulder Bookstore is kind of a big deal around these parts. and this coming Wednesday, I get to check it off the old bucket list.
Come join me, if you're in the area.
Have a manuscript burning a hole in your computer, but don't know how to approach the book business? Or have you started writing and want to know what you should do to get published once you finish your book?
I will be part of a special Author & Agent panel on Wednesday, November 29th with my literary agent, Sara Megibow, and we're going to tell you about what it takes to get a book in print!
There's also a rumor floating around that Sara will let attendees pitch her their books in person!!
Vouchers to attend are $5 (and get you $5 off a purchase at the event) and are on sale now – call or stop by to get one!
Get all the deets here: http://www.boulderbookstore.net/event/author-agent-panel-michael-f-haspil-sara-megibow
© 2020 The Official Site of Author Michael F. Haspil


Liba Fabrics is "Woven Into Your Success"!
Liba Fabrics, established in 1962, is proud to be celebrating our 57th anniversary. We are a leading Manufacturer, Converter and Importer of Fabrics in the USA used in a wide variety of trades. While our headquarters are based in the Fabric Center of New York City, our customer base is spread widely across North America and the World. Liba Fabrics also has the ability to ship anywhere in the world including shipments manufactured overseas to other overseas locations.
We stock all of our fabrics in ample quantities for immediate shipment. With the ability to dye many of our fabrics in the USA, Liba Fabrics can offer custom colors with smaller quantities quickly. We pride ourselves in using the highest quality yarns to make the best quality fabrics which are beautiful, washable and durable.
Liba Fabrics' Mission is to provide the very best Fabrics, Inventory and Service available anywhere and to assist our customers in achieving their professional growth and profit goals. We know that when our customers, employees and vendors are successful, we will be successful as well. Please give us the opportunity to prove this to you on an on-going basis.


text:
H.A.W.X. 2 announced for fall
By Stephany Nunneley, Wednesday, 5 May 2010 18:09 GMT
Ubisoft has announced that Tom Clancy's H.A.W.X. 2 is in development and will hit stores in the fall.
So that confirms one of the games from Ubisoft in the Tom Clancy series in the works, then.
Being developed by the Bucharest studios, in H.A.W.X. 2 you are once again an "elite aerial soldier" in control of "the world's most technologically advanced aircraft".
"With over one million units sold worldwide, Tom Clancy's H.A.W.X. has become a very successful brand for Ubisoft," stated Bogdan Bridinel, creative director at Ubisoft.
"This new H.A.W.X. game is directly inspired by Tom Clancy's books, and it will enable fans to once again experience the excitement and intensity that established H.A.W.X. as a successful brand"
It's to be made available on PC, PS3, Wii and Xbox 360.
Check out the artwork below.

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: MojoShader: HLSL to GLSL conversion I recently started developing an application using Monogame and entered the world of shaders and shading languages. The target platform is GL. Which means that I have to write my shader in HLSL, which subsequently gets converted into GLSL by MojoShader.
I apperently miss something very obvious and I was wondering if anyone could help me out. Here is the code that is supposed to paint every object in the scene in a uniform dark-grey color.
float4x4 World;
float4x4 View;
float4x4 Projection;

float4 AmbientColor = float4(1, 1, 1, 1);
float AmbientIntensity = 0.1;

struct VertexShaderInput
{
    float4 Position : POSITION0;
};

struct VertexShaderOutput
{
    float4 Position : POSITION0;
};

VertexShaderOutput VertexShaderFunction(VertexShaderInput input)
{
    VertexShaderOutput output;

    float4 worldPosition = mul(input.Position, World);
    float4 viewPosition = mul(worldPosition, View);
    output.Position = mul(viewPosition, Projection);

    return output;
}

float4 PixelShaderFunction(VertexShaderOutput input) : COLOR0
{
    return AmbientColor * AmbientIntensity;
}

technique Ambient
{
    pass Pass1
    {
        VertexShader = compile vs_2_0 VertexShaderFunction();
        PixelShader = compile ps_2_0 PixelShaderFunction();
    }
}

Unfortunately, it simply gives me a blank screen. But here is the thing, when I change that one line of code in the pixel shader return AmbientColor * AmbientIntensity; with return float4(1,1,1,1) * float(1); it gives me the correct result and I can actually see the object on the screen. It's as if when I am using the global variables they are set to zero.
Can it be that there might be issues when converting from HLSL to GLSL and I have to keep in mind certain specificities when writing my HLSL code?
I would greatly appreciate if you could help me answering this questions or point me in the right direction. Thank you.

A: The FX system in DirectX allows you to initialise the uniform variables AmbientColor and AmbientIntensity with values, but GLSL does not allow you to do this. For that matter, neither does HLSL - it's only the FX system built on top of HLSL that allows it.
So those uniforms will be defaulting to zero (or possibly some other uninitialized value).
You need to set the uniform constants in your program code before using the GLSL shader. In OpenGL this is usually done by calling glUniform1f and glUniform4f.

redpajama_set_name: RedPajamaStackExchange


text:
\section{Introduction}

In this article, we are interested in the computation of the first ${N}$ terms of power
series solutions of differential equations. This problem arises in
combinatorics, where the desired power series is a generating
function, as well as in numerical analysis and in particular in
control theory.

Let~${\mathbb{K}}$ be a field. Given~$r+1$ formal power
series~${a_0(t),\dots,a_{{r}}(t)}$ in~${\mathbb{K}}[[t]]$, one of
our aims is to provide fast algorithms for solving the
linear differential equation
\begin{equation} \label{lindiffeq}
a_{r}(t) y^{({r})}(t) + \dots + a_1(t) y'(t)+ a_0(t) y(t) = 0. %
\end{equation}
Specifically, under the hypothesis that~$t=0$ is an ordinary point
for Equation~\eqref{lindiffeq} (i.e., ${a_r(0) \neq 0}$), we give efficient
algorithms taking as input the first~${N}$ terms of the power
series $a_0(t), \dots, a_{r}(t)$ and answering the following algorithmic questions:
\begin{enumerate}
\item[{\bf i.}]  find the first~${N}$ coefficients of
  the~${r}$ elements of a basis of power series solutions
  of~\eqref{lindiffeq};
\item[{\bf ii.}] given initial conditions~$\alpha_0, \dots,
  \alpha_{{r}-1}$ in~${\mathbb{K}}$, find the first~${N}$
  coefficients of the unique solution~$y(t)$ in~${\mathbb{K}}[[t]]$ of
  Equation~\eqref{lindiffeq} satisfying
\[
  y(0) = \alpha_0,\quad y'(0) = \alpha_1, \quad \dots,\quad y^{({r}-1)}(0) =
  \alpha_{{r}-1}.
\]
\end{enumerate}
More generally, we also treat linear first-order systems of differential
equations. From the data of initial conditions~$v$
in~$\mathcal{M}_{{r}\times{r}} ({\mathbb{K}})$
(resp.~$\mathcal{M}_{{{r}} \times 1} ({\mathbb{K}})$) and of the
first~${N}$ coefficients of each entry of the matrices~$A$
and~$B$ in~$\mathcal{M}_{{r}\times{r}} ({\mathbb{K}}[[t]])$ (resp.~$b$
in~$\mathcal{M}_{{{r}} \times 1} ({\mathbb{K}}[[t]])$), we propose
algorithms that compute the first~${N}$ coefficients:
\begin{enumerate}
\item[\bf I.]  of a fundamental solution~$Y$ in~$\mathcal{M}_{{r}\times{r}}
  ({\mathbb{K}}[[t]])$ of~${Y' = AY + B}$, with~${Y(0)=v},\;{\det Y(0) \neq 0}$;
\item[\bf II.]  of the unique solution~$y(t)$
  in~$\mathcal{M}_{{{r}} \times 1} ({\mathbb{K}}[[t]])$ of~${y' = Ay
    + b}$, satisfying~${y(0) =v}$.
\end{enumerate}
Obviously, if an algorithm of algebraic complexity~$\mathsf{C}$ (i.e.,
using~$\mathsf{C}$ arithmetic operations in~${\mathbb{K}}$) is available for
problem~{\bf II}, then applying it~$r$ times solves problem~{\bf I} in
time~$r \,\mathsf{C}$, while applying it to a companion matrix solves
problem~{\bf ii} in time~$\mathsf{C}$ and problem~{\bf i} in~$r
\,\mathsf{C}$. Conversely, an algorithm solving~{\bf i} (resp. {\bf I}) also
solves {\bf ii} (resp. {\bf II}) within the same complexity, plus that
of a linear combination of series. Our reason for distinguishing the
four problems {\bf i, ii, I, II} is that in many cases, we are able to
give algorithms of better complexity than obtained by these
reductions.

The most popular way of solving~{\bf i}, {\bf ii}, {\bf I}, and~{\bf II} is the
method of undetermined coefficients that requires~${\mathcal O}({r}^2
{N}^2)$ operations in~${\mathbb{K}}$ for problem~{\bf i}
and~${\mathcal O}({r} {N}^2)$ operations in~${\mathbb{K}}$ for~${\bf
  ii}$. Regarding the dependence in~${N}$, this is certainly
too expensive compared to the size of the output, which is only linear
in~${N}$ in both cases. On the other hand, verifying the
correctness of the output for~{\bf ii} (resp.~{\bf i}) already
requires a number of operations in~${\mathbb{K}}$ which is linear
(resp.\ quadratic) in~${r}$: this indicates that there is little
hope of improving the dependence in~${r}$.  Similarly, for
problems~{\bf I} and~{\bf II}, the method of undetermined coefficients
requires~${\mathcal O}({N}^2)$ multiplications of~${r}\times {r}$
scalar matrices (resp.\ of scalar matrix-vector products in
size~${r}$), leading to a computational cost which is reasonable
with respect to~${r}$, but not with respect to~${N}$.

By contrast, the algorithms proposed in this article have costs that
are linear (up to logarithmic factors) in the
complexity~${\mathsf{M}}({N})$ of polynomial multiplication in degree
less than~${N}$ over~${\mathbb{K}}$. Using Fast Fourier Transform
(FFT) these costs become nearly linear~---~up to polylogarithmic
factors~---~with respect to~${N}$, for all of the four problems
above (precise complexity results are stated below).  Up to these
polylogarithmic terms in~${N}$, this estimate is probably not
far from the lower algebraic complexity one can expect: indeed, the
mere check of the correctness of the output requires, in each case, a
computational effort proportional to~${N}$.

\subsection{Newton Iteration}
In the case of first-order equations ($r=1$), Brent and Kung have
shown in~\cite{BrKu78} (see also~\cite{Geddes1979,KuTr78}) that the problems
can be solved with complexity ${\mathcal O}({\mathsf{M}}({N}))$ by means of a
formal Newton iteration. Their algorithm is based on the fact that
solving the first-order differential equation~${y'(t) = a(t) y(t)}$,
with~$a(t)$ in~${\mathbb{K}}[[t]]$ is equivalent to computing the
\emph{power series exponential\/}~$\exp(\int a(t))$.  This equivalence
is no longer true in the case of a system~${Y' = A(t) Y}$
(where~$A(t)$ is a power series matrix): for non-commutativity
reasons, the matrix exponential~${Y(t)= \exp(\int A(t))}$ is not a
solution of~${Y' = A(t) Y}$.

Brent and Kung suggest a way to extend their result to higher orders,
 and the corresponding algorithm has been shown by van der Hoeven
 in~\cite{vdHoeven02} to have complexity~${\mathcal O}({r}^{r}
 \,{\mathsf{M}}({N}))$. This is good with respect to~${N}$, but
 the exponential dependence in the order~${r}$ is unacceptable.

Instead, we solve this problem by devising a specific Newton iteration
for~${Y' = A(t) Y}$.  Thus we solve problems {\bf i} and {\bf I} in
${\mathcal O}({\mathsf{MM}}({r},{N}))$, where ${\mathsf{MM}}({r},{N})$ is the
number of operations in ${\mathbb{K}}$ required to multiply
${r}\times{r}$ matrices with polynomial entries of degree less
than~${N}$. For instance, when ${\mathbb{K}}=\mathbb{Q}$, this is
${\mathcal O}({r}^\omega {N}+r^2{\mathsf{M}}({N}))$, where
${r}^\omega$~can be seen as an abbreviation for~${\mathsf{MM}}({r},1)$, see
\S\ref{ssec:complexity} below.

\subsection{Divide-and-conquer}
The resolution of problems {\bf i} and {\bf I} by Newton iteration
relies on the fact that a whole basis is computed. Dealing with
problems {\bf ii} and {\bf II}, we do not know how to preserve this
algorithmic structure, while simultaneously saving a factor ${r}$.

To solve problems~{\bf ii} and~{\bf II}, we therefore propose an
alternative algorithm, whose complexity is also nearly linear
in~${N}$ (but not quite as good, being in
${\mathcal O}({\mathsf{M}}({N})\log{N})$), but whose dependence in the
order~${r}$ is better~---~linear for~{\bf i} and quadratic for~{\bf
ii}. In a different model of computation with power series, based on
the so-called \emph{relaxed multiplication}, van der Hoeven briefly outlines
another algorithm~\cite[Section~4.5.2]{vdHoeven02} solving
problem~{\bf ii} in~${\mathcal O}({r} \,{\mathsf{M}}({N}) \log {N})$.
To our knowledge, this result cannot be transferred to the usual model
of power series multiplication (called zealous in~\cite{vdHoeven02}).

We use a divide-and-conquer technique similar to that used in the fast
Euclidean algorithm~\cite{Knuth70,Schonhage71,Strassen83}. For
instance, to solve problem~{\bf ii}, our algorithm divides it into two
similar problems of halved size. The key point is that the lowest
coefficients of the solution~$y(t)$ only depend on the lowest
coefficients of the coefficients~$a_i$.  Our algorithm first computes
the desired solution~$y(t)$ at precision only~${N}/2$, then it
recovers the remaining coefficients of~$y(t)$ by recursively solving
at precision~${N}/2$ a new differential equation.  The main
idea of this second algorithm is close to that used for solving
first-order difference equations in~\cite{GaGe97}.

We encapsulate our main complexity results in
Theorem~\ref{theo:linear} below.  When FFT is used, the
functions~${\mathsf{M}}({N})$ and~${\mathsf{MM}}({r},{N})$ have, up to logarithmic terms, a nearly linear
growth in~${N}$, see
\S\ref{ssec:complexity}. Thus, the results in the following theorem are quasi-optimal.
\begin{Theo}\label{theo:linear}
  Let~${N}$ and~${r}$ be two positive integers and
  let\/~${\mathbb{K}}$ be a field of characteristic zero or at
  least~${N}$. Then:
  \begin{enumerate}
  \item[(a)] problems\/~{\bf i} and\/~{\bf I} can be solved
    using~${\mathcal O}\left({\mathsf{MM}}({r},{N}) \right)$ operations
    in~${\mathbb{K}}$;
  \item[(b)] problem\/~{\bf ii} can be solved using~${\mathcal O}\left({r} \,
    {\mathsf{M}} ({N}) \log {N}\right)$ operations in~${\mathbb{K}}$;
  \item[(c)] problem\/~{\bf II} can be solved using~${\mathcal O}\left({r}^2 \,
    {\mathsf{M}} ({N}) \log {N}\right)$ operations in~${\mathbb{K}}$.
  \end{enumerate}
\end{Theo}

\subsection{Special Coefficients}
For special classes of coefficients, we give different algorithms of
better complexity. We isolate two important classes of equations: that
with constant coefficients and that with polynomial coefficients.  In
the case of constant coefficients, our algorithms are based on the use
of the Laplace transform, which allows us to reduce the resolution of
differential equations with constant coefficients to manipulations
with rational functions.  The complexity results are summarized in the following theorem.
\begin{Theo}
  Let~${N}$ and~${r}$ be two positive integers and
  let\/~${\mathbb{K}}$ be a field of characteristic zero or at
  least~${N}$. Then, for differential equations and systems with constant coefficients:
  \begin{enumerate}
  \item[(a)] problem\/~{\bf i} can be solved
    using~${\mathcal O}\left({\mathsf{M}}({r})\,({r}+{N}) \right)$ operations
    in~${\mathbb{K}}$;
  \item[(b)] problem\/~{\bf ii} can be solved using~${\mathcal O}\left({\mathsf{M}}({r})\,(1+{N}/{r})\right)$ operations in~${\mathbb{K}}$;
  \item[(c)] problem\/~{\bf I} can be solved using~${\mathcal O}\left( {r}^{\omega+1}\log{r} + {r}{\mathsf{M}}({r}){N} \right)$ operations in~${\mathbb{K}}$;
  \item[(d)] problem\/~{\bf II} can be solved using~${\mathcal O}\left( {r}^\omega\log{r} + {\mathsf{M}}({r}){N} \right)$ operations in~${\mathbb{K}}$.
  \end{enumerate}
\end{Theo}
In the case of polynomial coefficients, we
exploit the linear recurrence satisfied by the coefficients of
solutions.  In Table~\ref{table1}, we gather the complexity estimates
corresponding to the best known solutions for each of the four
problems {\bf i}, {\bf ii}, {\bf I}, and~{\bf II} in the general case,
as well as in the above mentioned special cases. The algorithms are described in Section~\ref{sec:particular}.  In the polynomial
coefficients case, these results are well known. In the other cases,
to the best of our knowledge, the results improve upon existing
algorithms.

\begin{table}
\renewcommand{\arraystretch}{1.4}
$$\begin{array}{||l|l|l|l||l||}\hline\hline
 \textsf{Problem} & \textsf{constant} & \textsf{polynomial}
& \textsf{power series} & \textsf{output}\\[-2mm]
\quad (\textsf{input, output}) & \textsf{coefficients} &
\textsf{coefficients} & \textsf{coefficients} & \textsf{size} \\

\hline \hline \textbf{i} \quad  (\textsf{equation, basis}) &   {\mathcal O}({\mathsf{M}}({r})
 {N}) \;\hfill^\star & {\mathcal O}(d {r}^2 {N}) &   {\mathcal O}(
 {\mathsf{MM}}({r}, {N})) \;\hfill ^\star &  {\mathcal O}({r} {N})\\

\hline  \textbf{ii} \quad  (\textsf{equation, one solution}) &
 {\mathcal O}({\mathsf{M}}({r})  {N}/{r}) \;\hfill^\star  &{\mathcal O}(d
 {r} {N})  &{\mathcal O}({r} \, {\mathsf{M}}({N}) \log {N}) \;\hfill ^\star & {\mathcal O}({N})\\

 \hline \hline
 \textbf{I} \quad (\textsf{system, basis}) &
 {\mathcal O}({r} {\mathsf{M}}({r})
 {N}) \;\hfill^\star &  {\mathcal O}(d {r}^\omega {N})
 & {\mathcal O}({\mathsf{MM}}({r}, {N}))  \;\hfill ^\star  & {\mathcal O}({r}^2 {N})\\

\hline \textbf{II} \quad  (\textsf{system, one solution})  &
 {\mathcal O}({\mathsf{M}}({r}) {N}) \;\hfill ^\star &  {\mathcal O}(d {r}^2
 {N})  & {\mathcal O}({r}^2 \, {\mathsf{M}}({N}) \log
 {N}) \;\hfill ^\star  & {\mathcal O}({r} {N})\\

\hline\hline
\end{array}$$
\caption{Complexity of solving linear differential equations/systems for~${N}\gg{r}$.  Entries marked with a~`$\star$' correspond to new results. \label{table1}}
\end{table}

\subsection{Non-linear Systems}  As an important
consequence of Theorem~\ref{theo:linear}, we improve the known
complexity results for the more general problem of solving
\emph{non-linear} systems of differential equations. To do so, we use
a classical reduction technique from the non-linear to the linear
case, see for instance~\cite[Section~25]{Rall69}
and~\cite[Section~5.2]{BrKu78}. For simplicity, we only consider
non-linear systems of first order. There is no loss of generality in
doing so, more general cases can be reduced to that one by adding new
unknowns and possibly differentiating once. The following result
generalizes~\cite[Theorem~5.1]{BrKu78}.  If~${F=(F_1,\dots,F_r)}$ is a
differentiable function bearing on~${r}$
variables~${y_{1},\dots,y_{{r}}}$, we use the notation~${\mathbf{Jac}}(F)$
for the Jacobian matrix~$(\partial F_i/\partial y_j)_{1\leq i,j \leq {r}}$.

\begin{Theo}\label{theo:non-linear}
  Let~${N}$, ${r}$ be in~$\mathbb{N}$, let~${\mathbb{K}}$ be a
  field of characteristic zero or at least\/~${N}$ and
  let~$\varphi$ denote~${(\varphi_1,\dots,\varphi_{{r}})}$,
  where~$\varphi_i(t,y)$ are multivariate power series
  in\/~${\mathbb{K}}[[t,y_1,\dots,y_{r}]]$.
  \par
  Let\/~${{\mathsf{L}} :\mathbb{N} \to \mathbb{N}}$ be such that for all~$s(t)$
  in\/~$\mathcal{M}_{{r} \times 1}({\mathbb{K}}[[t]])$ and for all~$n$
  in\/~$\mathbb{N}$, the first~$n$ terms of~$\varphi(t,s(t))$ and
  of\/~${\mathbf{Jac}} ({\varphi}) (t,s(t))$ can be computed in~${\mathsf{L}}(n)$ operations
  in\/~${\mathbb{K}}$.  Suppose in addition that the function~${n \mapsto
    {\mathsf{L}}(n)/n}$ is increasing. Given initial conditions~$v$
  in\/~$\mathcal{M}_{{r} \times 1}({\mathbb{K}})$, if the differential
  system
  \[y'=\varphi(t,y),\qquad y(0)=v,\] admits a solution
  in\/~$\mathcal{M}_{{r} \times 1} ({\mathbb{K}}[[t]])$, then the
first\/~${N}$ terms of such a solution~$y(t)$ can be computed in
  ${\mathcal O} \left({\mathsf{L}}({N}) + \min ({\mathsf{MM}}({r},{N}), {r}^2
  {\mathsf{M}}({N}) \log {N}) \right)$ operations in~${\mathbb{K}}$.
\end{Theo}
Werschulz~\cite[Theorem~3.2]{Werschulz80} gave an algorithm solving
the same problem using the integral Volterra-type equation technique
described in~\cite[pp.~172--173]{Rall69}.  With our notation, his
algorithm uses~${\mathcal O} \left({\mathsf{L}}({N}) + {r}^2 {N} \,
{\mathsf{M}}({N})) \right)$ operations in~${\mathbb{K}}$ to compute a
solution at precision~${N}$. Thus, our algorithm is an
improvement for cases where ${\mathsf{L}}({N})$ is known to be
subquadratic with respect to~${N}$.

The best known algorithms for power series composition in~${{r}
\geq 2}$ variables require, at least on ``generic'' entries, a
number~${{\mathsf{L}}(n) = {\mathcal O}(n^{{r}-1} {\mathsf{M}}(n))}$ of operations in
${\mathbb{K}}$ to compute the first~$n$ coefficients of the
composition~\cite[Section~3]{BrKu77}.  This complexity is nearly
optimal with respect to the size of a generic input. By contrast, in
the univariate case, the best known result~\cite[Th.~2.2]{BrKu78}
is~${\mathsf{L}}(n) = {\mathcal O}(\sqrt{n \log n}\, {\mathsf{M}}(n))$. For special entries,
however, better results can be obtained, already in the univariate
case: exponentials, logarithms, powers of univariate power series can
be computed~\cite[Section~13]{Brent75} in~${\mathsf{L}}(n) = {\mathcal O}({\mathsf{M}}(n))$. As a
consequence, if~$\varphi$ is an~${r}$-variate sparse polynomial
with $m$~monomials of \emph{any} degree, then~${\mathsf{L}}(n) = {\mathcal O}(m {r} \,
{\mathsf{M}}(n))$.

Another important class of systems with such a
subquadratic~${\mathsf{L}}({N})$ is provided by \emph{rational systems},
where each~$\varphi_i$ is in~${\mathbb{K}}(y_1,\dots,y_{r})$.
Supposing that the complexity of evaluation of~$\varphi$ is bounded
by~$L$ (i.e., for any point~$z$ in~${\mathbb{K}}^{r}$ at
which~$\varphi$ is well-defined, the value~$\varphi(z)$ can be
computed using at most~$L$ operations in~${\mathbb{K}}$), then, the
Baur-Strassen theorem~\cite{BaSt83} implies that the complexity of
evaluation of the Jacobian~${\mathbf{Jac}}(\varphi)$ is bounded by~$5L$, and
therefore, we can take~${{\mathsf{L}}(n)= {\mathsf{M}}(n) L}$ in the statement of
Theorem~\ref{theo:non-linear}.

\subsection{Basic Complexity Notation} \label{ssec:complexity}

Our algorithms ultimately use, as a basic operation, multiplication
of matrices with entries that are polynomials (or truncated power
series).  Thus, to estimate their complexities in a unified manner,
we use a function~${{\mathsf{MM}} : \mathbb{N} \times \mathbb{N} \to \mathbb{N}}$ such that any two~${r
  \times r}$ matrices with polynomial entries in~${\mathbb{K}}[t]$ of
degree less than~$d$ can be multiplied using~${\mathsf{MM}}(r,d)$ operations
in~${\mathbb{K}}$. In particular,~${\mathsf{MM}}(1,d)$ represents the number of
base field operations required to multiply two polynomials of degree
less than~$d$, while~${\mathsf{MM}}(r,1)$ is the arithmetic cost of scalar~${r
  \times r}$ matrix multiplication. For simplicity, we
denote~${\mathsf{MM}}(1,d)$ by~${\mathsf{M}}(d)$ and we have~${{\mathsf{MM}}(r,1) =
  {\mathcal O}(r^\omega)}$, where~${2 \leq \omega \leq 3}$ is the so-called {\em
  exponent of the matrix multiplication}, see, e.g.,~\cite{BuClSh97}
and~\cite{GaGe99}.

Using the algorithms of~\cite{ScSt71,CaKa91}, one can take~${\mathsf{M}}(d)$
in~${\mathcal O}(d \log d \log \log d)$; over fields supporting FFT, one can
take~${\mathsf{M}}(d)$ in~${\mathcal O}(d\log d)$.  By~\cite{CaKa91} we can always
choose~${\mathsf{MM}}(r,d)$ in~${{\mathcal O}(r^\omega \, {\mathsf{M}}(d))}$, but better
estimates are known in important particular cases.  For instance, over
fields of characteristic~$0$ or larger than~$2d$, we have~${{\mathsf{MM}}(r,d)
  = {\mathcal O}( r^\omega d + r^2 \, {\mathsf{M}}(d))}$, see~\cite[Th.~4]{BoSc05}.  To
simplify the complexity analyses of our algorithms, we suppose that the
{multiplication cost} function~${\mathsf{MM}}$ satisfies the following standard
growth hypotheses for all integers~$d_{1},d_{2}$ and~$r$:
\begin{equation}\label{hyp:Mat}
{\mathsf{MM}}(r,d_{1}d_{2}) \leq d_{1}^{2} {\mathsf{MM}} (r,d_{2})
\qquad \text{and}  \qquad
\frac{{\mathsf{MM}}(r,d_{1})}{d_{1}} \leq \frac{{\mathsf{MM}}(r,d_{2})}{d_{2}}
\quad  \text{if $d_{1} \leq d_{2}$}.
\end{equation}
In particular, Equation~\eqref{hyp:Mat} implies the inequalities
\begin{equation} \label{ineq:Mat}
\begin{split}
	{\mathsf{MM}}(r,2^\kappa)+{\mathsf{MM}}(r,2^{\kappa-1})+M(r,2^{\kappa-2})+\dots+{\mathsf{MM}}(r,1)&
		\le 2{\mathsf{MM}}(r,2^\kappa),\\
	{\mathsf{M}}(2^\kappa)+2{\mathsf{M}}(2^{\kappa-1})+4{\mathsf{M}}(2^{\kappa-2})+\dots+2^\kappa{\mathsf{M}}(1)&
		\le (\kappa+1){\mathsf{M}}(2^\kappa).
\end{split}
\end{equation}
These inequalities are crucial to prove the estimates in
Theorem~\ref{theo:linear} and Theorem~\ref{theo:non-linear}.  Note
also that when the available multiplication algorithm is slower than
quasi-linear (e.g., Karatsuba or naive multiplication), then in the
second inequality, the factor~$(\kappa+1)$ can be replaced by a constant
and thus the estimates ${\mathsf{M}}({N})\log {N}$ in our complexities become
${\mathsf{M}}({N})$ in those cases.

\subsection{Notation for Truncation}

It is recurrent in algorithms to split a polynomial into a lower and a
higher part. To this end, the following notation proves convenient.
Given a polynomial~$f$, the remainder and quotient of its Euclidean
division by~$t^k$ are respectively denoted $\trunch fk$ and~$\truncl
fk$.  Another occasional operation consists in taking a middle part
out of a polynomial.  To this end, we let $\trunc fkl$
denote~$\truncl{\trunch fl}{k}$.  Furthermore, we shall write $f=g\mod
t^k$ when two polynomials or series $f$ and~$g$ agree up to
degree~$k-1$ included.  To get a nice behaviour of integration with
respect to truncation orders, all primitives of series are chosen with
zero as their constant coefficient.

\section{Newton Iteration for Systems of Linear Differential
  Equations}

Let~${Y'(t) = A(t) Y(t)+B(t)}$ be a linear differential system,
where~$A(t)$ and~$B(t)$ are~${{r} \times {r}}$ matrices with
coefficients in~${\mathbb{K}}[[t]]$. Given an invertible scalar
matrix~$Y_0$, an integer~${{N} \geq 1}$, and the expansions
of~$A$ and~$B$ up to precision~${N}$, we show in this section
how to compute efficiently the power series expansion at
precision~${N}$ of the unique solution of the Cauchy problem
$$Y'(t) = A(t) Y(t)+B(t) \quad \text{and} \quad Y(0) = Y_0.$$
This enables us to answer problems \textbf{I} and \textbf{i}, the
latter being a particular case of the former (through the application
to a companion matrix).

\subsection{Homogeneous Case}
First, we design a Newton-type iteration to solve the homogeneous
system~${Y'=A(t)Y}$.  The classical Newton iteration to solve an
equation $\phi(y)=0$ is $Y_{\kappa+1}=Y_\kappa-U_\kappa$, where
$U_\kappa$ is a solution of the linearized equation
$D\phi|_{Y_\kappa}\cdot U=\phi(Y_\kappa)$ and $D\phi|_{Y_\kappa}$ is
the differential of~$\phi$ at~$Y_\kappa$. We apply this idea to the
map~${\phi: Y \mapsto Y'-AY}$. Since~$\phi$ is linear, it is its own
differential and the equation for~$U$ becomes
$$U'-AU=Y'_\kappa-AY_\kappa.$$
Taking into account the proper orders of truncation and using
Lagrange's method of variation of
parameters~\cite{Lagrange1869,Ince56}, we are thus led to the
iteration
\[\begin{cases}Y_{\kappa+1} &= Y_\kappa - \trunch {U_\kappa}
{2^{\kappa+1}},\\
U_{\kappa}& = Y_\kappa \int
\trunch{Y_\kappa^{-1}}{2^{\kappa+1}} \left(Y_\kappa' -
  \trunch{A}{2^{\kappa+1}} Y_\kappa\right).
\end{cases}
\]
Thus we need to compute (approximations
of) the solution~$Y$ and its inverse simultaneously.  Now, a well-known Newton
iteration for the inverse $Z$ of $Y$ is
\begin{equation}\label{Newton:inverse}
Z_{\kappa+1} =
\trunch
  {Z_{\kappa} + Z_{\kappa} (I_{r} - Y Z_{\kappa})}
  {2^{\kappa+1}}.
\end{equation}
 It was introduced by Schulz~\cite{Schulz33} in
the case of real matrices; its version for matrices of power series is
given for instance in~\cite{MoCa79}.

\begin{figure}
  \begin{center}
    \fbox{\begin{minipage}{9cm}
      \medskip
      \begin{center}\textsf{SolveHomDiffSys}($A,{N},Y_0$) \end{center}
      \textbf{Input:} ${Y_0,A_0, \dots, A_{{N}-2}}$
        in~$\mathcal{M}_{{r}\times{r}}({\mathbb{K}})$,
        ${A = \sum A_i t^i}$.
        \par\smallskip
        \textbf{Output:} ${Y=\sum_{i=0}^{{N}-1}Y_i t^i}$ in
$\mathcal{M}_{{r}\times{r}}({\mathbb{K}})[t]$ such that
${Y' = A Y \mod t^{{N}-1}}$, and $Z=Y^{-1}\mod t^{{N}/2}$.

        \begin{tabbing}
          \;\;\\$Y \leftarrow  (I_{{r}}+ t  A_0) Y_0$
          \\$ Z \leftarrow Y_0^{-1}$
          \\$m \leftarrow 2$\\
          \textsf{while} $m \leq {N}/2$ \textsf{do}\\
          \hspace{0.5cm} $Z \leftarrow Z + \trunch {Z(I_{{r}} - YZ)}{m} $\\
          \hspace{0.5cm} $Y \leftarrow Y - \trunch {Y\left(\int Z (Y' - \trunch{A}{2m-1} Y) \right)}{2m} $ \\

          \hspace{0.5cm} $m \leftarrow 2m$ \\
          \textsf{return} $Y,Z$
        \end{tabbing}
      \end{minipage}
    }\end{center}
  \caption{Solving the Cauchy problem~$Y' = A(t) Y$,  $Y(0) = Y_0$ by Newton iteration.}
  \label{fig:hom}
\end{figure}
Putting together these considerations, we arrive at the algorithm
\textsf{SolveHomDiffSys} in Figure~\ref{fig:hom}, whose correctness
easily follows from Lemma~\ref{prop:Newton} below.  Remark
that in the scalar case~(${{r}=1}$) algorithm
\textsf{SolveHomDiffSys} coincides with the algorithm for power series
exponential proposed by Hanrot and Zimmermann~\cite{HaZi04}; see
also~\cite{Bernstein}. In the case~${{r}>1}$, ours is a nontrivial
generalization of the latter. Because it takes primitives of series at
precision~${N}$, algorithm \textsf{SolveHomDiffSys} requires
that the elements~${2,3,\dots,{N}-1}$ be invertible
in~${\mathbb{K}}$. Its complexity~$\mathsf{C}$ satisfies the
recurrence~${\mathsf{C}(m) = \mathsf{C}(m/2) + {\mathcal O}({\mathsf{M}}({r},m))}$, which
implies~---~using the growth hypotheses on~${\mathsf{M}}$~---~that~${\mathsf{C}({N})
  = {\mathcal O}({\mathsf{M}}({r},{N}))}$.  This proves the first assertion of
Theorem~\ref{theo:linear}.

\smallskip

 \begin{Lemme}\label{prop:Newton}
   Let~$m$ be an even integer. Suppose
   that~$Y_{(0)}, Z_{(0)}$ in~$\mathcal{M}_{{r}\times{r}}({\mathbb{K}}[t])$ satisfy
   \begin{equation*}
     I_{{r}} - Y_{(0)} Z_{(0)} = 0 \mod t^{m/2} \quad \text{and} \quad
     Y_{(0)}' - AY_{(0)} = 0 \mod t^{m-1},
   \end{equation*}
and that they are of degree less than $m/2$ and~$m$, respectively.
   Define
   \begin{equation*}
     Z:=\trunch {Z_{(0)} \left(2I_{{r}}  - Y_{(0)} Z_{(0)} \right)} {m} \quad \text{and} \quad
     Y:=\trunch {Y_{(0)} \left(I_{{r}} - \int Z  (Y_{(0)}'-AY_{(0)})  \right)} {2m}.
   \end{equation*}
   Then~$Y$ and~$Z$ satisfy the equations
   \begin{equation} \label{eq:double}
     I_{{r}} - Y Z = 0 \mod t^{m} \quad \text{and} \quad
     Y' - AY = 0 \mod t^{2m-1}.
   \end{equation}
 \end{Lemme}
\proof Using the definitions of~$Y$ and~$Z$, it follows that
$$
I_{{r}} - YZ = (I_{{r}} -Y_{(0)} Z_{(0)})^2 - (Y -
Y_{(0)}) Z_{(0)} (2I_{{r}} -Y_{(0)} Z_{(0)}) \mod t^m.
$$
Since by hypothesis~${I_{{r}} -Y_{(0)} Z_{(0)}}$ and~${Y -
  Y_{(0)}}$ are zero modulo~$t^{m/2}$, the right-hand side is zero
modulo~$t^m$ and this establishes the first formula in
Equation~\eqref{eq:double}.  Similarly, write~${Q= \int Z
  (Y_{(0)}'-AY_{(0)})}$ and observe $Q=0\mod t^m$ to get the equality
$$
Y' - AY = (I-YZ) (Y_{(0)}' - AY_{(0)}) - (Y_{(0)}' -
AY_{(0)}) Q \mod t^{2m-1}.
$$
Now,~${Y_{(0)}' - AY_{(0)}}=0 \mod t^{m-1}$, while~$Q$
and~${I_{{r}} -YZ}$ are zero modulo~$t^{m}$ and therefore
the right-hand side of the last equation is zero modulo~$t^{2m-1}$,
proving the last part of the lemma.
\hfill$\square$

\subsection{General Case}
We want to solve the equation~${Y'=AY +B}$, where~$B$ is an~${{r}
\times {r}}$ matrix with coefficients in~${\mathbb{K}}[[t]]$.
Suppose that we have already computed the solution~$\widetilde{Y}$ of
the associate homogeneous equation~${\widetilde{Y}'=A \widetilde{Y}}$,
together with its inverse~$\widetilde{Z}$.  Then, by the method of
variation of parameters, ${Y_{(1)}= \widetilde{Y} \int \widetilde{Z}
B}$ is a particular solution of the inhomogeneous problem, thus the
general solution has the form~${Y = Y_{(1)}+\widetilde{Y}}$.

\begin{figure}
  \begin{center}
    \fbox{\begin{minipage}{9.5cm}
        \medskip
        \begin{center}\textsf{SolveInhomDiffSys}($A,B,{N},Y_0$) \end{center}
        \textbf{Input:} ${Y_0,A_0, \dots, A_{{N}-2}}$ in~$\mathcal{M}_{{r}\times{r}}({\mathbb{K}})$,
          ${A = \sum A_i t^i}$,
          \par\smallskip
          ${B_0, \dots, B_{{N}-2}}$ in~$\mathcal{M}_{{r}\times{r}}({\mathbb{K}})$,
            ${B(t) = \sum B_i t^i}$.
            \par\medskip
            \textbf{Output:} ${Y_1,\dots,Y_{{N}-1}}$
            in~$\mathcal{M}_{{r}\times{r}}({\mathbb{K}})$ such that ${Y=Y_0 + \sum Y_i
            t^i}$ satisfies~${Y' = A Y + B \mod t^{{N}-1}}$.

\begin{tabbing}
  \;\;\\$\widetilde{Y},\widetilde{Z} \leftarrow \textsf{SolveHomDiffSys} (A,{N},Y_0)$ \\
  $\widetilde{Z} \leftarrow \widetilde{Z} + \trunch {\widetilde{Z}(I_{r} - \widetilde{Y}\widetilde{Z})} {{N}}$\\
  $Y \leftarrow \trunch {\widetilde{Y}   \int (\widetilde{Z}  B)} {{N}}$ \\
  $Y \leftarrow Y + \widetilde{Y}$\\
  \textsf{return} $Y$
\end{tabbing}
\end{minipage}
}\end{center}
\caption{Solving the Cauchy problem $Y' = A Y  + B, \; Y(0) = Y_0$ by Newton iteration.}
\label{fig:inhom}
\end{figure}

Now, to compute the particular solution~$Y_{(1)}$ at
precision~${N}$, we need to know both~$\widetilde{Y}$
and~$\widetilde{Z}$ at the same precision~${N}$. To do this, we
first apply the algorithm for the homogeneous case and
iterate~\eqref{Newton:inverse} once. The resulting algorithm is
encapsulated in Figure~\ref{fig:inhom}.

\section{Divide-and-conquer Algorithm}\label{sec:DAC}

We now give our second algorithm, which allows us to solve problems
{\bf ii} and~{\bf II} and to finish the proof of
Theorem~\ref{theo:linear}.  Before entering a detailed presentation,
let us briefly sketch the main idea in the particular case of a
homogeneous differential equation~${\mathcal{L}y=0}$,
where~$\mathcal{L}$ is a linear differential operator in~${\delta = t
\frac{d}{dt}}$ with coefficients in~${\mathbb{K}}[[t]]$.
(The introduction of~$\delta$ is only for pedagogical reasons.)  The
starting remark is that if a power series~$y$ is written as~${y_0 +
t^m y_1}$, then~${\mathcal{L}(\delta)y = \mathcal{L}(\delta)y_0 +
t^m\mathcal{L}(\delta + m)y_1}$. Thus, to compute a solution~$y$
of~${\mathcal{L}(\delta) y = 0 \mod t^{2m}}$, it suffices to determine
the lower part of~$y$ as a solution of ${\mathcal{L}(\delta) y_0 = 0
\mod t^m}$, and then to compute the higher part~$y_1$, as a solution
of the inhomogeneous equation~${\mathcal{L}(\delta + m) y_1 = - R \mod
t^{m}}$, where the rest~$R$ is computed so that~${\mathcal{L}(\delta)
y_0 = t^m R \mod t^{2m}}$.

Our algorithm \textsf{DivideAndConquer} makes a recursive use of this idea. Since, during the
recursions, we are naturally led to treat inhomogeneous equations of a
slightly more general form than that of~{\bf II} we introduce the
notation~$\mathcal{E}(s,p,m)$ for the vector equation
\begin{equation*}
t y' +   (p I_{r} - tA) y =  s \mod t^{m}.
\end{equation*}
The algorithm is described in Figure~\ref{fig:algo-dac}.
Choosing~${p=0}$ and~${s(t) =t b(t)}$ we retrieve the equation of
problem~{\bf II}.  Our algorithm \textsf{Solve} to solve problem~{\bf
II} is thus a specialization of \textsf{DivideAndConquer}, defined by
making \textsf{Solve}$(A,b,{N},v)$ simply call
\textsf{DivideAndConquer}$(tA,tb,0,{N},v)$. Its correctness relies on
the following immediate lemma.

\begin{figure}\label{fig:algo-dac}
  \begin{center}
    \fbox{\begin{minipage}{8.5 cm}
        \medskip
        \begin{center}\textsf{DivideAndConquer($A,s,p,m,v$)} \end{center}
	\textbf{Input:} $A_0,\dots,A_{m-1}$ in~$\mathcal{M}_{{r}\times{r}}({\mathbb{K}})$,
        ${A = \sum A_i t^i}$, $s_0,\dots,s_{m-1},v$ in~$\mathcal{M}_{{r}\times1}({\mathbb{K}})$,
	${s = \sum s_i t^i}$, $p$ in~${\mathbb{K}}$.
        \par\smallskip
        \textbf{Output:} ${y=\sum_{i=0}^{{N}-1}y_i t^i}$ in
$\mathcal{M}_{{r}\times1}({\mathbb{K}})[t]$ such that
${ty' + (pI_{{r}}-tA)y=s \mod t^m}$, ${y(0)=v}$.

        \begin{tabbing}
          \textsf{If}~$m=1$ \textsf{then} \\
          {\quad \textsf{if}} $p=0$ \textsf{then} \\
          {\quad \quad \textsf{return}} $v$\\
          {\quad else}  \textsf{return} $p^{-1} s(0)$\\
          \textsf{end if}\\
          $d \leftarrow \intpart{m/2}$\\
          $s \leftarrow \trunch s{d}$\\
          $y_0 \leftarrow$ {\sf DivideAndConquer}($A,s,p,d,v$)\\
          $R \leftarrow \trunc{s- t y_0' - (p I_{r} -tA) y_0}{d}{m} $ \\
          $y_1 \leftarrow$ {\sf DivideAndConquer}($A, R, p+d, m-d,v$)\\
          \textsf{return} $y_0 + t^d y_1$
        \end{tabbing}
      \end{minipage}
    }\end{center}
  \caption{Solving $ty' + (pI_{{r}}-tA)y=s \mod t^m$, ${y(0)=v}$,
    by divide-and-conquer.}
\label{fig:2}
 \end{figure}

\begin{Lemme}
  Let~$A$ in~$\mathcal{M}_{{r}\times{r}}({\mathbb{K}}[[t]])$, $s$
  in~$\mathcal{M}_{{r} \times 1}({\mathbb{K}}[[t]])$, and let~$p,d$
  in~$\mathbb{N}$.  Decompose~$\trunch sm$ into a sum~${s_0 +
    t^d s_1}$.  Suppose that~$y_0$
  in~$\mathcal{M}_{{r}\times1}({\mathbb{K}}[[t]])$ satisfies the
  equation~$\mathcal{E}(s_0,p,d)$, set $R$ to be
  \begin{equation*}
    \trunch {(ty'_0 + (pI_{r} - t A) y_0 - s_0)/t^d} {m-d},
  \end{equation*}
  and let~$y_1$ in~$\mathcal{M}_{{r} \times 1}({\mathbb{K}}[[t]])$ be
  a solution of the equation~${\mathcal{E}(s_1-R,p+d,m-d)}$.  Then the
  sum $y:= y_0 + t^d y_1$ is a solution of the
  equation~$\mathcal{E}(s,p,m)$.
\end{Lemme}

The only divisions performed along our algorithm~\textsf{Solve} are by 1, \dots, ${N}-1$.
As a consequence of this remark and of the previous lemma, we deduce the complexity estimates in the proposition below;
for a general matrix~$A$, this proves point~(c) in Theorem~\ref{theo:linear}, while the
particular case when $A$~is companion proves point~(b).

\begin{Prop}
  Given the first~$m$ terms of the entries
  of~$A\in\mathcal{M}_{{r}\times{r}}({\mathbb{K}}[[t]])$ and
  of~$s\in\mathcal{M}_{{r} \times 1}({\mathbb{K}}[[t]])$,
  given~$v\in\mathcal{M}_{{r} \times 1}({\mathbb{K}})$,
  algorithm~$\emph{\textsf{DivideAndConquer}}(A,s,p,m,v)$ computes a
  solution of the linear differential system~${ty' + (pI_{{r}}-tA)
  y=s \mod t^m}$, ${y(0)=v}$, using~${{\mathcal O}({r}^2 \, {\mathsf{M}}(m) \log m)}$
  operations in~${\mathbb{K}}$. If $A$ is a companion matrix, the cost
  reduces to ${\mathsf{C}(m) = {\mathcal O}({r} \, {\mathsf{M}}(m) \log m)}$.
\end{Prop}
\proof The correctness of the algorithm follows from the previous
Lemma.  The cost~$\mathsf{C}(m)$ of the algorithm satisfies the recurrence
$$ \mathsf{C}(m) = \mathsf{C}(\intpart{m/2}) + \mathsf{C}(\trunch{m/2}{}) + {r}^2 \, {\mathsf{M}}(m)
+ {\mathcal O}({r} m),$$ where the term ${r}^2 \, {\mathsf{M}}(m)$ comes from the
application of $A$ to $y_0$ used to compute the rest~$R$. From this
recurrence, it is easy to infer that~${\mathsf{C}(m) = {\mathcal O}({r}^2 \, {\mathsf{M}}(m)
\log m)}$. Finally, when $A$ is a companion matrix, the vector~$R$ can
be computed in time $O({r} \, {\mathsf{M}}(m))$, which implies that in this
case~${\mathsf{C}(m) = {\mathcal O}({r} \, {\mathsf{M}}(m) \log m)}$.
\hfill$\square$

\section{Faster Algorithms for Special Coefficients}\label{sec:particular}

\subsection{Constant Coefficients}\label{ssec:const-coeffs}
Let~$A$ be a constant~${{r} \times {r}}$ matrix and let~$v$ be a
vector of initial conditions. Given~${{N} \geq 1}$, we want to
compute the first~${N}$ coefficients of the series expansion of
a solution~$y$ in~$\mathcal{M}_{{r} \times 1}({\mathbb{K}}[[t]])$
of~${y' = Ay}$, with~${y(0) = v}$. In this setting, many various
algorithms have been proposed to solve problems {\bf i}, {\bf ii},
{\bf I}, and {\bf II}, see for
instance~\cite{Pennell26,Putzer66,Kirchner67,Fulmer75,MoLo78,Leonard96,Liz98,Gu99,Gu01,HaFiSm01,MoLo03,LuRo04}.
Again, the most naive algorithm is based on the method of undetermined
coefficients. On the other hand, most books on differential equations,
see, e.g., \cite{Ince56,Coddington61,Arnold92} recommend to simplify
the calculations using the Jordan form of matrices. The main drawback
of that approach is that computations are done over the algebraic
closure of the base field~${\mathbb{K}}$. The best complexity result
known to us is given in~\cite{LuRo04} and it is quadratic in~${r}$.

We concentrate first on problems~{\bf ii} and~{\bf II} (computing a
single solution for a single equation, or a first-order system).
Our algorithm for problem~{\bf II}
uses~${{\mathcal O}({r}^\omega \log {r} + {N} {\mathsf{M}}({r}))}$
operations in~${\mathbb{K}}$ for a general constant matrix~$A$ and
only~${\mathcal O}({N} {\mathsf{M}}({r})/{r})$ operations in~${\mathbb{K}}$ in
the case where~$A$ is a companion matrix (problem {\bf ii}). Despite
the simplicity of the solution, this is, to the best of our knowledge,
a new result.

In order to compute~${y_{N} = \sum_{i=0}^{N}{A^i v
t^i/i!}}$, we first compute its Laplace
transform~${z_{N}=\sum_{i=0}^{N} {A^i v t^i}}$: indeed,
one can switch from~$y_{N}$ to~$z_{N}$ using
only~${\mathcal O}({N} {r})$ operations in ${\mathbb{K}}$.  The
vector~$z_{N}$ is the truncation at order~${{N} + 1}$
of~${z=\sum_{i\ge0} A^i v t^i =(I-tA)^{-1} v}$. As a byproduct of a
more difficult question,~\cite[Prop.~10]{Storjohann02} shows
that~$z_{N}$ can be computed using~${\mathcal O}({N}
{r}^{\omega-1})$ operations in~${\mathbb{K}}$. We propose a solution
of better complexity.

By Cramer's rule,~$z$ is a vector of rational functions~$z_i(t)$, of
degree at most~${r}$.  The idea is to first compute~$z$ as a
rational function, and then to deduce its expansion
modulo~$t^{{N} +1}$. The first part of the algorithm does not
depend on~${N}$ and thus it can be seen as a precomputation.
For instance, one can us
~\cite[Corollary~12]{Storjohann02}, to compute $z$ in
complexity~${\mathcal O}({r}^{\omega} \log {r})$. In the second step of
the algorithm, we have to expand~${r}$ rational functions of degree
at most~${r}$ at precision~${N}$.  Each such expansion
can be performed using~${\mathcal O}({N}{\mathsf{M}}({r})/{r})$ operations
in~${\mathbb{K}}$, see, e.g., the proof of~\cite[Prop.~1]{BoFlSaSc05}.
The total cost of the algorithm is thus~${{\mathcal O}({r}^\omega\log {r}
+ {N} {\mathsf{M}}({r}))}$. We give below a simplified variant with
same complexity, avoiding the use of the algorithm
in~\cite{Storjohann02} for the precomputation step and relying instead
on a technique which is classical in the computation of minimal
polynomials~\cite{BuClSh97}.
\begin{enumerate}
\item Compute the vectors~$v,Av,A^2 v,A^3v,\dots,A^{2r}v$
  in~${\mathcal O}({r}^\omega\log {r})$, as follows: \\ for~$\kappa$
  from~$1$ to~${1 + \log {r}}$ do
    \begin{enumerate}
    \item compute~$A^{2^\kappa}$
    \item compute~${A^{2^\kappa} \times [v | Av | \cdots | A^{2^\kappa-1}v]}$,
        thus getting~${[A^{2^\kappa}v | A^{2^\kappa+1}v | \cdots | A^{2^{\kappa+1}-1}v]}$
    \end{enumerate}
  \item For each~${j=1, \dots, {r}}$:
\begin{enumerate}
\item recover the rational fraction whose series expansion
  is~$\sum{(A^i v)_j t^i}$ by Pad\'e approximation
  in~${\mathcal O}({\mathsf{M}}({r})\log {r})$ operations
\item compute its expansion up to precision $t^{{N} + 1}$
  in~${\mathcal O}({N} \, {\mathsf{M}}({r})/{r})$ operations
\item recover the expansion of~$y$ from that of~$z$,
  using~${\mathcal O}({N})$ operations.
\end{enumerate}
\end{enumerate}
This yields the announced total cost of ~${{\mathcal O}({r}^\omega \log
{r} + {N} {\mathsf{M}}({r}))}$ operations for problem {\bf II}.

We now turn to the estimation of the
cost for problems~{\bf i} and~{\bf I} (bases of solutions).
In the case of equations with constant coefficients, we use the
Laplace transform again. If $y = \sum_{i \geq 0} y_i t^i$ is a
solution of an order ${r}$ equation with constant coefficients,
then the sequence $(z_i)=(i! y_i)$ is generated by a linear recurrence
with constant coefficients. Hence, the first terms $z_1,\dots,z_{N}$ can
be computed in $O({N}{\mathsf{M}}({r})/{r})$ operations, using again the
algorithm described in~\cite[Prop.~1]{BoFlSaSc05}.
For problem~{\bf I}, the exponent~$\omega+1$ in the cost of the precomputation can be reduced to~$\omega$ by a very different approach; we cannot give the details here for space limitation.

\subsection{Polynomial Coefficients}
If the coefficients in one of the problems {\bf i, ii, I}, and~{\bf II}
are polynomials in~${\mathbb{K}}[t]$ of degree at most~$d$, using the
linear recurrence of order~$d$ satisfied by the coefficients of the
solution seemingly yields the lowest possible complexity.
Consider for instance problem~{\bf II}.
Plugging~${A=\sum_{i=0}^d t^i A_i}$, ${b=\sum_{i=0}^d t^i
  b_i}$, and~${y=\sum_{i\geq 0}^d t^i y_i}$ in the
equation~${y'=Ay+b}$, we arrive at the following recurrence
$$
y_{k+d+1} = (d+k+1)^{-1} (A_d y_k + A_{d-1}y_{k+1} + \dots + A_0
y_{k+d} + b_{k+d}), \quad \text{for all $k \geq -d$}.
$$
Thus, to compute~$y_0,\dots,y_{N}$, we need to
perform~${{N} d}$ matrix-vector products; this is done
using~${{\mathcal O} (d {N} {r}^2)}$ operations in~${\mathbb{K}}$. A
similar analysis implies the other complexity estimates in the third
column of Table~\ref{table1}.

\section{Non-linear Systems of Differential Equations}
Let~${\varphi(t,y) = (\varphi_1(t,y), \dots, \varphi_{r}(t,y))}$,
where each~$\varphi_i$ is a power series
in~${\mathbb{K}}[[t,y_1,\dots,y_{r}]]$. We consider the first-order
non-linear system in~$y$
\[
(\mathcal{N})\qquad
y_1'(t) = \varphi_1(t,y_1(t),\dots,y_{r}(t)), \quad\dots,\quad
 y_{r}'(t) = \varphi_{r}(t,y_1(t),\dots,y_{r}(t)).
\]

To solve~($\mathcal{N}$), we use the classical technique of
\emph{linearization}. The idea is to attach, to an \emph{approximate}
solution~$y_0$ of~($\mathcal{N}$), a \emph{tangent} system in the new unknown~$z$,
$$
(\mathcal{T},y_0) \qquad z' = {\mathbf{Jac}}(\varphi)(y_0) z - y_0'+
\varphi(y_0),
$$
which is linear and whose solutions serve to obtain a
better approximation of a true solution of~($\mathcal{N}$).  Indeed,
let us denote by~$(\mathcal{N}_m),(\mathcal{T}_m)$ the
systems~$(\mathcal{N}),(\mathcal{T})$ where all the equalities are
taken modulo~$t^m$.  Taylor's formula states that the
expansion~${\varphi(y+z) - \varphi(y) - {\mathbf{Jac}}(\varphi)(y) z}$
is equal to~$0$ modulo~$z^2$.
It is a simple matter to check that if~$y$ is a
solution of~$(\mathcal{N}_m)$ and if~$z$ is a solution
of~$(\mathcal{T}_{2m},y)$, then~${y+z}$ is a solution
of~$(\mathcal{N}_{2m})$.  This justifies the correctness of
Algorithm {\sf SolveNonLinearSys}.

 To analyze the complexity of this algorithm, it suffices to remark
 that for each integer~$\kappa$ between $1$ and~$\intpart{\log {N}}$,
 one has to compute one solution of a linear inhomogeneous first-order
 system at precision~$2^\kappa$ and to evaluate~$\varphi$ and its
 Jacobian on a series at the same precision. This concludes the proof of Theorem~\ref{theo:non-linear}.

\begin{figure}[h]
\begin{center}
  \fbox{\begin{minipage}{9 cm}

      \medskip
      \begin{center}\textsf{SolveNonLinearSys}($\phi,v$) \end{center}
      \textbf{Input:} ${N}$ in~$\mathbb{N}$,
      $\varphi(t,y)$ in~${\mathbb{K}}[[t,y_1,\dots,y_{r}]]^{{r}}$,
      $v$ in~${\mathbb{K}}^{r}$
      \par\smallskip
      \textbf{Output:} first~${N}$ terms of a~$y(t)$
      in~${\mathbb{K}}[[t]]$ such that~${y(t)' = \varphi(t,y(t)) \mod
        t^{N}}$ and~${y(0) = v}$.
\begin{tabbing}
  \;\;    \\$m \leftarrow 1$\\
$y \leftarrow v$ \\
  \textsf{while} $m \leq {N}/2$ \textsf{do}\\
  \hspace{0.5cm} $A \leftarrow \trunch{{\mathbf{Jac}}(\varphi) (y)}{2m}$\\
  \hspace{0.5cm} $b \leftarrow \trunch{\varphi (y) - y'}{2m}$ \\
  \hspace{0.5cm} $z \leftarrow \textsf{Solve}(A, b, 2m, 0)$ \\
  \hspace{0.5cm} $y \leftarrow y + z$ \\
  \hspace{0.5cm} $m \leftarrow 2m$ \\
  \textsf{return} $y$
\end{tabbing}
\end{minipage}
}\end{center}
\caption{Solving the non-linear differential system ${y' = \varphi(t,y), \; y(0) = v}$.}
\label{fig:nonlinear}
 \end{figure}

 \section{Implementation and Timings}

 We implemented our algorithms \textsf{SolveDiffHomSys} and
 \textsf{Solve} in Magma~\cite{Magma} and ran the programs on an Athlon processor at 2.2~GHz
 with 2~GB of memory.\footnote{All the computations have been done on the machines of
   the MEDICIS ressource center
   \url{http://medicis.polytechnique.fr}.}  We used Magma's built-in
 polynomial arithmetic (using successively naive, Karatsuba and FFT
 multiplication algorithms), as well as Magma's scalar matrix
 multiplication (of cubic complexity in the ranges of our interest).
 We give three tables of timings. First, we compare in Figure
 \ref{fig:benchs} the performances of our algorithm
 \textsf{SolveDiffHomSys} with that of the naive quadratic algorithm,
 for computing a basis of (truncated power series) solutions of a
 homogeneous system.  The order of the system varies from $2$ to $16$,
 while the precision required for the solution varies from 256 to
 4096; the base field is $\mathbb{Z}/p\mathbb{Z}$, where $p$ is a 32-bit prime.

\begin{figure}
\begin{center}
\begin{tabular}{c||c|c|c|c}
$ {N} \ddots  {r}$      &  2  & 4   & 8 & 16 \\
\hline
256    &   0.02 \text{vs.}  2.09      & 0.08 \text{vs.}  6.11        &  0.44  \text{vs.}  28.16     &  2.859 \text{vs.}  168.96 \\
512    &  0.04 \text{vs.}  8.12       &  0.17 \text{vs.}  25.35     & 0.989  \text{vs.}  113.65  &  6.41 \text{vs.}  688.52 \\
1024  & 0.08 \text{vs.}  32.18      &  0.39  \text{vs.}  104.26  & 2.30 \text{vs.}  484.16     &  15   \text{vs.}  2795.71\\
2048  & 0.18  \text{vs.}  128.48   &  0.94 \text{vs.}  424.65   & 5.54 \text{vs.}  2025.68  &  36.62  \text{vs.} $> 3$\text{hours} $^\star$\\
4096  & 0.42 \text{vs.}  503.6      &  2.26 \text{vs.}  1686.42 &  13.69 \text{vs.}  8348.03  & 92.11  \text{vs.} $> 1/2$ \text{day}$^\star$ \\

\end{tabular}
\end{center}
\caption{Computation of a basis of a linear homogeneous system with
  ${r}$ equations, at precision ${N}$: comparison of timings
  (in seconds) between algorithm \textsf{SolveDiffHomSys} and the
  naive algorithm. Entries marked with a `$\star$' are estimated timings.}
\label{fig:benchs}
\end{figure}

Then we display in Figure~\ref{fig:matmul} and Figure~\ref{fig:newton}
the timings obtained respectively with
algorithm~\textsf{Solve\-DiffHomSys} and with the algorithm for
polynomial matrix multiplication \textsf{PolyMatMul} that was used as
a primitive of \textsf{SolveDiffHomSys}. The similar shapes of the two
surfaces indicate that the complexity prediction of point (a) in
Theorem~\ref{theo:linear} is well respected in our implementation:
\textsf{SolveDiffHomSys} uses a constant number (between 4 and 5) of
polynomial multiplications; note that the abrupt jumps at powers of 2
reflect the performance of Magma's FFT implementation of polynomial
arithmetic.

\begin{figure}[ht]
\begin{center}
\begin{minipage}[b]{0.45\textwidth}
\centerline{\includegraphics[scale=0.35,angle=270]{MatMul}}
\caption{Timings of algorithm \textsf{PolyMatMul}.  \label{fig:matmul}}
\end{minipage}\hskip0.1\textwidth
\begin{minipage}[b]{0.45\textwidth}
\centerline{\includegraphics[scale=0.35,angle=270]{Newton}}
\caption{Timings of algorithm  \textsf{SolveDiffHomSys}.  \label{fig:newton}}
\end{minipage}
\end{center}
\end{figure}

In Figure ~\ref{fig:dac} we give the timings for the computation of
one solution of a linear differential equation of order $2$, $4$, and
$8$, respectively, using our algorithm~\textsf{Solve} in
Section~\ref{sec:DAC}. Again, the shape of the three curves
experimentally confirms the nearly linear behaviour established in
point (b) of Theorem~\ref{theo:linear}, both in the
precision~${N}$ and in the order ${r}$ of the complexity of
algorithm ~\textsf{Solve}. Finally, Figure~\ref{fig:dac+naive}
displays the three curves from Figure~\ref{fig:dac} together with the
timings curve for the naive quadratic algorithm computing one solution
of a linear differential equation of order $2$.  The conclusion is
that our algorithm~\textsf{Solve} becomes very early superior to the
quadratic one.

\begin{figure}[ht]
\begin{center}
\begin{minipage}[b]{0.45\textwidth}
\centerline{\includegraphics[scale=0.3,angle=270]{DAC}}
\caption{Timings of algorithm \textsf{Solve} for equations of orders 2, 4, and~8. \label{fig:dac}}
\end{minipage}\hskip0.1\textwidth
\begin{minipage}[b]{0.45\textwidth}
\centerline{\includegraphics[scale=0.3,angle=270]{DAC+Naive}}
\caption{Same, compared to the naive algorithm for a second-order equation.\label{fig:dac+naive}}
\end{minipage}
\end{center}
\end{figure}

We also implemented our algorithms of Section~\ref{ssec:const-coeffs}
for the special case of constant coefficients. For reasons of space
limitation, we only provide a few experimental results for
problem~{\bf II}.  Over the same finite field, we computed: a solution
of a linear system with~${r}=8$ at
precision~${N}\approx10^6$ in~24.53s; one at doubled precision
in doubled time~49.05s; one for doubled order~${r}=16$ in doubled
time~49.79s.

\bibliographystyle{plain}

redpajama_set_name: RedPajamaArXiv


text:
Oops, an error occurred! Code: 202101210150320cb823ff
At 7.750m it is time to return
09.07.2008 22:54 Age: 13 yrs
By: Tommy
The saddle at 7.750 m below the north summit is the place to return. The actual conditions do not allow to continue safely.
Camp at 7200m
Clara and Markus at 7700m with the main summit in the background
On the way down the luggage was enormous
Clara called again today, from the camp at 7.600 m. They finished their ascent at the saddle below the north summit at 7.750 m. The three possibilities for continuing the ascent were not promising. The direct ascent along the NW face using a steep snow field was decided to be too dangerous due to a lot of snow that has fallen during the last days increasing the risk of avalanches. Taking the north ridge was considered unsafe due to strong winds (70-80km/h). And, descending to the normal route that starts in the basin to the SW side (Bazhin) would have been a nightmare: while going down 400m of altitude, a re-ascent of the 400m would have been needed coming back up after the summit. Also, the alternative way of going down along the Kinshofer route was said to be difficult by now since the ropes of the other expeditions had been covered by ice.
<- Back to: News


Balmain Dark Blue Wool Cashmere Full Zip Pullover. Shop Balmain Menswear online at Harrods including Balmain T shirts jeans jackets and knitwear. Shop online for womens wool wool blend coats at. Invest in tough luxe street style with must have men's Balmain T shirts jeans and jackets and earn Rewards points. Balmain Black Knit Logo Sweater. Get free shipping on a variety of women's clothing shoes accessories and more. Taking the fashion world by storm with its sharp tailoring and curvy silhouettes Parisian label Balmain is a sartorial staple for in the know style mavens. Vous pourrez retirer au 0 rue Saint Honor 001 Paris fond de cour du lundi au vendredi 10h 1 h muni d'une copie de la facture l'adresse suivante.
The fine yarns tailored silhouette and hues of Balmain knits epitomize laid back luxury. Buy Balmain clothing accessories and shoes only on the official website. Shop women's clothing on sale at Neiman Marcus.
Engage students in STEM programs we have you covered. Welcome to H M. Mara Women's Apparel at offering the modern energy style and personalized service of Saks Fifth Avenue stores in an enhanced easy to navigate shopping experience. Shop designer clothing now.
00 1 T E L. Track over 10 Balmain Sweaters and knitwear for stock and sale updates. Balmain Black Logo Sweatshirt. The singular attitude. Learn with SAE. Shop Balmain Menswear online at Harrods including Balmain T shirts jeans and jackets and earn Rewards points. RECIBIR S E MAIL PARA CONFIRMAR SUSCRIPCI N. Shop sheath shift and more designer dresses from the best brands. Black Khaki Zebra Print Sweater. Buy Balmain clothing accessories and get Free Shipping Returns in USA. Shop designer clothes shoes bags Balmain Black Wool Sweater and accessories from top designer brands at a discount. Balmains designer knitwear for men channels Olivier Rousteings favorite runway themes from rock styling to classic Parisian signatures.
Get free shipping on a variety of womens clothing shoes accessories and more.
Shop the full range of sweaters and cardigans for women from the latest Balmain. Cashmere sweater Blue.
Balmain Mens Merino Wool Orange Stripe Pullover Sweater M Medium. Shop online the latest SS1 collection of Balmain for Men on SSENSE and find the perfect clothing accessories for you among a great selection. Breaking news more every time you open your browser. Black Logo Sweatshirt. Buttoned knitted wool cashmere blend jumper. Free shipping and returns.
BALMAIN Sweater Cardigan Woman Short striped knit sweatshirt f Opening Ceremony Red Varsity Crewneck Sweater. Designer clothes and clothing from luxury designer brands including McQueen Miu Miu Williamson plus more. Commandes Click Collect retrait chez colette seront honor es jusqu'au 1 janvier 01. Black Signature Sweatshirt. Free shipping and returns on designer dresses for women at. Results 1 of Acne Studios Yellow Striped Jacquard Crewneck Sweater. Make Yahoo Your Home Page. Balmain Button Trimmed. Whether you are an engineer or business professional looking to advance your career or an educator in search of creative and effective ways to engage students in STEM programs we have you covered.
Balmain Button Trimmed Wool Cashmere Sweater. Shop womens clothing on sale at Neiman Marcus. Balmain Merino Wool Pullover Lyst. Shop the full range of sweaters and cardigans for women from the latest Balmain collection only on the official website. Shop the latest arrivals from the Balmain women's collection featuring exclusive clothing accessories and get Free Shipping Returns in USA. KOHKEN SHOP brembo kohken ecommerce open source shop online shopping. Balmain Black sweatshirt with multicoloured print. Balmain Off White. Shop online the latest SS1 collection of Balmain for Women on SSENSE and find the perfect clothing accessories for you among a great selection. Turn on search history to start remembering your searches. Shop online for women's wool wool blend coats at. Logo intarsia Virgin Wool Sweater Black. Exclusive designer must haves are on sale now at Barneys New York. We did not find results for balmain black wool sweater. Select your region to enter our site. Shop the latest arrivals from the Balmain womens collection featuring exclusive clothing accessories and shoes only on the official website. Pol tica de privacidad Condiciones de compra.
SAE International is the global leader in technical learning for the mobility industry. Maybe you would like to learn more about one of these? Browse our selection of double breasted coats blazers trenches and more. Road ready biker detailing makes its way onto sweatpants biker jackets and everyday denim while jumpers sweatshirts and outerwear come printed crested and studded with military buttons.


text:
Contact/Tip us
Tag: Info
What's Indus OS?
Indus OS is India's homegrown operating system which is a forked version of Android, developed for the regional languages users in the country. Touted as the world's first regional OS, the platform supports 12 major Indian languages at the moment. But don't Android itself and all the forked versions of it, MIUI, Touchwiz included come with regional languages support already?
Well, they do, but it's sort of a mixed bag. Unlike stock Android and other custom Android skins with support for Indian languages, in Indus OS, menu items, icon texts, et al too appear in the chosen regional language. Also, since it is targeted at first time smartphone users, the UI is smart and intuitive. Continue reading "What's Indus OS?" →
Let your friends know as well
Almost half the world will be online by the end of 2016! But it's not as great as it sounds
A new report on the connected world predicts that by the end of 2016, 47% of the world's population will be using the internet as mobile networks grow and prices fall. Considering the internet has only really been commercially available since the early 90s, spreading across half the world in a quarter-century is an impressive feat. But the scales of internet access are decidedly tipped in the developed world's favor.
This report comes from the United Nations' International Telecommunications Union and also reveals that in the world's developed countries about 80% of the population use the internet. But only about 40% in developing countries and less than 15% in less-developed countries are online. Continue reading "Almost half the world will be online by the end of 2016! But it's not as great as it sounds" →
What is a Quantum Dot dispay? Is it better than OLED?
Most displays today — including all of those made by Samsung, Sony, Vizio and just about every other brand — are based on decades-old LCD, or liquid crystal display, technology. In the last few years something better has come along, called OLED, or organic light-emitting diode. OLEDs are genrally considered superior to LCD but as of now mostly it is a matter of preference to be honest.
The reason OLED displays are considered superior is because its a new technology, and it is already ahead of LCD, a much more mature technology, in various areas. Going forward as the OLED technology matures, it is sure to surpass LCDs. OLED displays may well replace the traditional LCD as the go to panel in the future, but it is facing competition from new display technologies too. Continue reading "What is a Quantum Dot dispay? Is it better than OLED?" →
You knew the Facebook app was draining your battery, but did you know how much?
Facebook is without a doubt one of the most active and biggest developers for the Android platform. The company does after all own three of the top free android apps. The official Facebook app recieves updates almost every week with improvements and bug fixes and what not. But as it stands, after more than six or seven years, the Facebook app is still growing more and more resource hungry.
A quick glance at the Google Play Store reviews shows that the Facebook app has often been criticized for issues related to battery draining and general performance. Facebook's central item officer, Chris Cox, even encouraged his staff to switch to Android in order to live with the issues and figure them out.
Continue reading "You knew the Facebook app was draining your battery, but did you know how much?" →
Google Chrome's worth to Google is more than many realize
As the company has been prone to brag from time to time, Alphabet's Google has seven services claiming over a billion monthly active users (MAUs): Google Search, Google Maps, YouTube, Android, Gmail, the Play Store and Google Chrome. Of the seven, Google Chrome is arguably the one that gets the least attention and praise. After all, web browsers are more than two decades old now, and a large portion of Internet usage has migrated to apps (smartphone apps particularly).
But as new disclosures help show, Chrome's momentum remains quite strong, and the browser's strategic value to Google is as big as ever. Continue reading "Google Chrome's worth to Google is more than many realize" →
Countries with the fastest 4G LTE in 2016
OpenSignal has released their State of LTE report for 2016, which gives us a good look at the accessibility of 4G LTE all over the world. The report is a culmination of efforts and analysis of 17 billion measurements collected from half million OpenSignal users. Compared with last year and even earlier this year, global speeds are up on average, with countries poised to pass the 50 Mb/s speed for the first time very soon. While global infrastructure varies, 4G LTE is now also a faster than the world's typical broadband speeds. Continue reading "Countries with the fastest 4G LTE in 2016" →
Everything new in Android 7.1 Preview explained by the makers at Google
Android 7.1 has a lot of changes that were first supposed to come out with the Android 7.0 but as it turned out, Google was saving those for the Pixel. While some features such as the Google Assistant, Night light and Fingerprint Gestures are to be retained by the Pixels, at least for now, many other features are available for everyone who gets the Android 7.1 update.
The Android 7.1 Developer Preview is live right now for Nexus 5X, Nexus 6P, and Pixel C. So what's new? Continue reading "Everything new in Android 7.1 Preview explained by the makers at Google" →
Google Assistant can share web articles you're reading with others
Back when Allo was announced, and even as it was launched to a mixed response to say the least, the most exciting and the only well received aspect of it was the inbuilt Google Assistant. But with the release of Google's Pixel and Pixel XL smartphones, Google Assistant can finally be put through its paces and users can see to what extent they can use the virtual assistant. So far Google has only advertised the core features of Assistant, such as opening apps, asking questions, creating notes and reminders, along with many other typical information-related queries or tasks.
On the social media side of things, though, not much has been said about how it can help users interact and share content. Social media is an important aspect of the lives of many people, and for the most part, we look at and make posts from our smartphones. The same goes for looking at online content. With Google Assistant, Google wants to make our phones smarter for the things we use them for, so social media is a natural integration. As users are getting their hands in the Pixel, they're also finding more tricks that are hidden beneath the surface. Continue reading "Google Assistant can share web articles you're reading with others" →
Fix for the annoying Chromecast notification from Facebook
Facebook promised earlier this month that they will be building chromecast support in the Facebook android app which has been available on the iOS app for a while now. It would seem the social networking giant is working towards the promised feature and has been since quite a while actually. These are screenshots from March by a user who found that there was a chromecast icon in his Facebook app and it also worked. Whatever happened to that later.
Continue reading "Fix for the annoying Chromecast notification from Facebook" →
Follow VERDICT on WordPress.com
How to mirror your Android screen on your Windows 10 PC without any third party app
Download Google Pixel Alarms, Ringtones and Notification Sounds
400 Material Design Wallpapers
Download : Samsung Galaxy S8 leaked Stock wallpapers
Set beautiful Cinemagraph GIFs as your Android Wallpaper
The best icon packs for Android: 10 packs for ultimate customization
Download : Google Pixel Boot Animation [Black and White versions]
Apple Macbook Pro 2016 Wallpapers
Download : Samsung Galaxy S8 Wallpapers [Update : 24+18 new] March 31, 2017
Finally an HTC flagship worth waiting for, with customizable sensors on the frame March 28, 2017
Andy Rubin teases Essential's first bezel-less smartphone March 27, 2017
Install the Google Pixel Launcher from Android O Developer Preview on any Android device March 25, 2017
Android O Feature Focus : Redesigned Settings March 23, 2017
Android O Feature focus : Improved battery life with limits on background apps March 22, 2017
Android O Feature Focus : Notification Channels March 22, 2017
Even more Galaxy S8 images leak March 21, 2017
Android O first Developer Preview available for fownload March 21, 2017
Samsung officially announces Bixby, the virtual assistant arriving with the Galaxy S8 March 20, 2017
Download : Samsung Galaxy S8 leaked Stock wallpapers March 17, 2017
Google reportedly working on a third Pixel smartphone codenamed 'taimen' March 16, 2017
The next version of Android will be smarter with new assistive features March 15, 2017
Samsung Galaxy S8 screenshots leaked, download app icons March 14, 2017